@datagrok/helm 2.1.4 → 2.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.js +69 -97
- package/package.json +3 -3
- package/src/package.ts +28 -60
package/dist/package.js
CHANGED
|
@@ -1299,17 +1299,16 @@ class NotationConverter extends _units_handler__WEBPACK_IMPORTED_MODULE_1__.Unit
|
|
|
1299
1299
|
return newColumn;
|
|
1300
1300
|
}
|
|
1301
1301
|
/**
|
|
1302
|
-
* Convert HELM
|
|
1302
|
+
* Convert HELM string to FASTA/SEPARATOR
|
|
1303
1303
|
*
|
|
1304
|
+
* @param {string} helmPolymer A string to be converted
|
|
1304
1305
|
* @param {string} tgtNotation Target notation: FASTA or SEPARATOR
|
|
1305
1306
|
* @param {string} tgtSeparator Optional target separator (for HELM ->
|
|
1306
1307
|
* @param {string | null} tgtGapSymbol Optional target gap symbol
|
|
1307
1308
|
* SEPARATOR)
|
|
1308
|
-
* @return {
|
|
1309
|
+
* @return {string} Converted string
|
|
1309
1310
|
*/
|
|
1310
|
-
|
|
1311
|
-
// This function must not contain calls of isDna() and isRna(), for
|
|
1312
|
-
// source helm columns may contain RNA, DNA and PT across different rows
|
|
1311
|
+
convertHelmToFastaSeparator(helmPolymer, tgtNotation, tgtSeparator, tgtGapSymbol) {
|
|
1313
1312
|
if (!tgtGapSymbol) {
|
|
1314
1313
|
tgtGapSymbol = (this.toFasta(tgtNotation)) ?
|
|
1315
1314
|
_units_handler__WEBPACK_IMPORTED_MODULE_1__.UnitsHandler._defaultGapSymbolsDict.FASTA :
|
|
@@ -1319,34 +1318,48 @@ class NotationConverter extends _units_handler__WEBPACK_IMPORTED_MODULE_1__.Unit
|
|
|
1319
1318
|
tgtSeparator = (this.toFasta(tgtNotation)) ? '' : this.separator;
|
|
1320
1319
|
}
|
|
1321
1320
|
const helmWrappersRe = /(R\(|D\(|\)|P)/g;
|
|
1321
|
+
const isNucleotide = helmPolymer.startsWith('DNA') || helmPolymer.startsWith('RNA');
|
|
1322
|
+
// items can be monomers or helms
|
|
1323
|
+
const helmItemsArray = this.splitter(helmPolymer);
|
|
1324
|
+
const tgtMonomersArray = [];
|
|
1325
|
+
for (let i = 0; i < helmItemsArray.length; i++) {
|
|
1326
|
+
let item = helmItemsArray[i];
|
|
1327
|
+
if (isNucleotide)
|
|
1328
|
+
item = item.replace(helmWrappersRe, '');
|
|
1329
|
+
if (item === _units_handler__WEBPACK_IMPORTED_MODULE_1__.UnitsHandler._defaultGapSymbolsDict.HELM) {
|
|
1330
|
+
tgtMonomersArray.push(tgtGapSymbol);
|
|
1331
|
+
}
|
|
1332
|
+
else if (this.toFasta(tgtNotation) && item.length > 1) {
|
|
1333
|
+
// the case of a multi-character monomer converted to FASTA
|
|
1334
|
+
const monomer = '[' + item + ']';
|
|
1335
|
+
tgtMonomersArray.push(monomer);
|
|
1336
|
+
}
|
|
1337
|
+
else {
|
|
1338
|
+
tgtMonomersArray.push(item);
|
|
1339
|
+
}
|
|
1340
|
+
}
|
|
1341
|
+
return tgtMonomersArray.join(tgtSeparator);
|
|
1342
|
+
}
|
|
1343
|
+
/**
|
|
1344
|
+
* Convert HELM column to FASTA/SEPARATOR
|
|
1345
|
+
*
|
|
1346
|
+
* @param {string} tgtNotation Target notation: FASTA or SEPARATOR
|
|
1347
|
+
* @param {string} tgtSeparator Optional target separator (for HELM ->
|
|
1348
|
+
* @param {string | null} tgtGapSymbol Optional target gap symbol
|
|
1349
|
+
* SEPARATOR)
|
|
1350
|
+
* @return {DG.Column} Converted column
|
|
1351
|
+
*/
|
|
1352
|
+
convertHelm(tgtNotation, tgtSeparator, tgtGapSymbol) {
|
|
1353
|
+
// This function must not contain calls of isDna() and isRna(), for
|
|
1354
|
+
// source helm columns may contain RNA, DNA and PT across different rows
|
|
1322
1355
|
const newColumn = this.getNewColumn(tgtNotation);
|
|
1323
1356
|
// assign the values to the empty column
|
|
1324
1357
|
newColumn.init((idx) => {
|
|
1325
1358
|
const helmPolymer = this.column.get(idx);
|
|
1359
|
+
return this.convertHelmToFastaSeparator(helmPolymer, tgtNotation, tgtSeparator, tgtGapSymbol);
|
|
1326
1360
|
// we cannot use isDna() or isRna() because source helm columns can
|
|
1327
1361
|
// contain DNA, RNA and PT in different cells, so the corresponding
|
|
1328
1362
|
// tags cannot be set for the whole column
|
|
1329
|
-
const isNucleotide = helmPolymer.startsWith('DNA') || helmPolymer.startsWith('RNA');
|
|
1330
|
-
// items can be monomers or helms
|
|
1331
|
-
const helmItemsArray = this.splitter(helmPolymer);
|
|
1332
|
-
const tgtMonomersArray = [];
|
|
1333
|
-
for (let i = 0; i < helmItemsArray.length; i++) {
|
|
1334
|
-
let item = helmItemsArray[i];
|
|
1335
|
-
if (isNucleotide)
|
|
1336
|
-
item = item.replace(helmWrappersRe, '');
|
|
1337
|
-
if (item === _units_handler__WEBPACK_IMPORTED_MODULE_1__.UnitsHandler._defaultGapSymbolsDict.HELM) {
|
|
1338
|
-
tgtMonomersArray.push(tgtGapSymbol);
|
|
1339
|
-
}
|
|
1340
|
-
else if (this.toFasta(tgtNotation) && item.length > 1) {
|
|
1341
|
-
// the case of a multi-character monomer converted to FASTA
|
|
1342
|
-
const monomer = '[' + item + ']';
|
|
1343
|
-
tgtMonomersArray.push(monomer);
|
|
1344
|
-
}
|
|
1345
|
-
else {
|
|
1346
|
-
tgtMonomersArray.push(item);
|
|
1347
|
-
}
|
|
1348
|
-
}
|
|
1349
|
-
return tgtMonomersArray.join(tgtSeparator);
|
|
1350
1363
|
});
|
|
1351
1364
|
// TAGS.aligned is mandatory for columns of NOTATION.FASTA and NOTATION.SEPARATOR
|
|
1352
1365
|
const splitter = (0,_macromolecule__WEBPACK_IMPORTED_MODULE_2__.getSplitterForColumn)(newColumn);
|
|
@@ -1390,7 +1403,7 @@ class NotationConverter extends _units_handler__WEBPACK_IMPORTED_MODULE_1__.Unit
|
|
|
1390
1403
|
this._splitter = null;
|
|
1391
1404
|
}
|
|
1392
1405
|
}
|
|
1393
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90YXRpb24tY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibm90YXRpb24tY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxRQUFRLEVBQTRDLE1BQU0saUJBQWlCLENBQUM7QUFFMUcsaUZBQWlGO0FBQ2pGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxZQUFZO0lBR2pELElBQWMsUUFBUTtRQUNwQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSTtZQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxjQUF3QixJQUFhLE9BQU8sY0FBYyxpQ0FBbUIsQ0FBQyxDQUFDLENBQUM7SUFFeEYsV0FBVyxDQUFDLGNBQXdCLElBQWEsT0FBTyxjQUFjLHlDQUF1QixDQUFDLENBQUMsQ0FBQztJQUVoRyxNQUFNLENBQUMsY0FBd0IsSUFBYSxPQUFPLGNBQWMsK0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBRTdGOzs7Ozs7T0FNRztJQUNLLHVCQUF1QixDQUFDLFNBQWlCLEVBQUUsaUJBQWdDLElBQUk7UUFDckYsSUFBSSxjQUFjLEtBQUssSUFBSTtZQUN6QixjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRXpDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLHNDQUFvQixDQUFDO1FBQ3hELHNEQUFzRDtRQUN0RCxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FB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TUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkI7Z0JBQ3pDLHlCQUF5QixJQUFJLENBQUMsUUFBUSx5QkFBeUIsV0FBVyxJQUFJLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsWUFBbUIsR0FBYztRQUMvQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUE3UEwsY0FBUyxHQUF3QixJQUFJLENBQUM7SUE4UDlDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIERvIG5vdCBjaGFuZ2UgdGhlc2UgaW1wb3J0IGxpbmVzIHRvIG1hdGNoIGV4dGVybmFsIG1vZHVsZXMgaW4gd2VicGFjayBjb25maWd1cmF0aW9uICovXG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG5pbXBvcnQge1VuaXRzSGFuZGxlcn0gZnJvbSAnLi91bml0cy1oYW5kbGVyJztcbmltcG9ydCB7Z2V0U3BsaXR0ZXJGb3JDb2x1bW4sIGdldFN0YXRzLCBOT1RBVElPTiwgU2VxQ29sU3RhdHMsIFNwbGl0dGVyRnVuYywgVEFHU30gZnJvbSAnLi9tYWNyb21vbGVjdWxlJztcblxuLyoqIENsYXNzIGZvciBoYW5kbGluZyBjb252ZXJzaW9uIG9mIG5vdGF0aW9uIHN5c3RlbXMgaW4gTWFjcm9tb2xlY3VsZSBjb2x1bW5zICovXG5leHBvcnQgY2xhc3MgTm90YXRpb25Db252ZXJ0ZXIgZXh0ZW5kcyBVbml0c0hhbmRsZXIge1xuICBwcml2YXRlIF9zcGxpdHRlcjogU3BsaXR0ZXJGdW5jIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJvdGVjdGVkIGdldCBzcGxpdHRlcigpOiBTcGxpdHRlckZ1bmMge1xuICAgIGlmICh0aGlzLl9zcGxpdHRlciA9PT0gbnVsbClcbiAgICAgIHRoaXMuX3NwbGl0dGVyID0gZ2V0U3BsaXR0ZXJGb3JDb2x1bW4odGhpcy5jb2x1bW4pO1xuICAgIHJldHVybiB0aGlzLl9zcGxpdHRlcjtcbiAgfVxuXG4gIHB1YmxpYyB0b0Zhc3RhKHRhcmdldE5vdGF0aW9uOiBOT1RBVElPTik6IGJvb2xlYW4geyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IE5PVEFUSU9OLkZBU1RBOyB9XG5cbiAgcHVibGljIHRvU2VwYXJhdG9yKHRhcmdldE5vdGF0aW9uOiBOT1RBVElPTik6IGJvb2xlYW4geyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IE5PVEFUSU9OLlNFUEFSQVRPUjsgfVxuXG4gIHB1YmxpYyB0b0hlbG0odGFyZ2V0Tm90YXRpb246IE5PVEFUSU9OKTogYm9vbGVhbiB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gTk9UQVRJT04uSEVMTTsgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgTWFjcm9tb2xlY3VsZSBjb2x1bW4gZnJvbSBGQVNUQSB0byBTRVBBUkFUT1Igbm90YXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvciAgQSBzcGVjaWZpYyBzZXBhcmF0b3IgdG8gYmUgdXNlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFzdGFHYXBTeW1ib2wgIEdhcCBzeW1ib2wgaW4gRkFTVEEsICctJyBieSBkZWZhdWx0XG4gICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gICAgICAgIEEgbmV3IGNvbHVtbiBpbiBTRVBBUkFUT1Igbm90YXRpb25cbiAgICovXG4gIHByaXZhdGUgY29udmVydEZhc3RhVG9TZXBhcmF0b3Ioc2VwYXJhdG9yOiBzdHJpbmcsIGZhc3RhR2FwU3ltYm9sOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IERHLkNvbHVtbiB7XG4gICAgaWYgKGZhc3RhR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgZmFzdGFHYXBTeW1ib2wgPSB0aGlzLmRlZmF1bHRHYXBTeW1ib2w7XG5cbiAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihOT1RBVElPTi5TRVBBUkFUT1IpO1xuICAgIC8vIGFzc2lnbiB0aGUgdmFsdWVzIHRvIHRoZSBuZXdseSBjcmVhdGVkIGVtcHR5IGNvbHVtblxuICAgIG5ld0NvbHVtbi5pbml0KChpZHg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgZmFzdGFQb2x5bWVyID0gdGhpcy5jb2x1bW4uZ2V0KGlkeCk7XG4gICAgICBjb25zdCBmYXN0YU1vbm9tZXJzQXJyYXkgPSB0aGlzLnNwbGl0dGVyKGZhc3RhUG9seW1lcik7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZhc3RhTW9ub21lcnNBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZmFzdGFNb25vbWVyc0FycmF5W2ldID09PSBmYXN0YUdhcFN5bWJvbClcbiAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXlbaV0gPSBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5TRVBBUkFUT1I7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFzdGFNb25vbWVyc0FycmF5LmpvaW4oc2VwYXJhdG9yKTtcbiAgICB9KTtcbiAgICBuZXdDb2x1bW4uc2V0VGFnKERHLlRBR1MuVU5JVFMsIE5PVEFUSU9OLlNFUEFSQVRPUik7XG4gICAgbmV3Q29sdW1uLnNldFRhZyhUQUdTLnNlcGFyYXRvciwgc2VwYXJhdG9yKTtcbiAgICByZXR1cm4gbmV3Q29sdW1uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgd3JhcHBlciBzdHJpbmdzIGZvciBIRUxNLCBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdGhlXG4gICAqIG1hY3JvbW9sZWN1bGUgKHBlcHRpZGUsIEROQSwgUk5BKVxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gQXJyYXkgb2Ygd3JhcHBlcnNcbiAgICovXG4gIHByaXZhdGUgZ2V0SGVsbVdyYXBwZXJzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBwcmVmaXggPSAodGhpcy5pc0RuYSgpKSA/ICdETkExeycgOlxuICAgICAgKHRoaXMuaXNSbmEoKSkgPyAnUk5BMXsnIDpcbiAgICAgICAgKHRoaXMuaXNQZXB0aWRlKCkpID8gJ1BFUFRJREUxeycgOlxuICAgICAgICAgICdVbmtub3duJzsgLy8gdGhpcyBjYXNlIHNob3VsZCBiZSBoYW5kbGVkIGFzIGV4Y2VwdGlvbmFsXG5cbiAgICBpZiAocHJlZml4ID09PSAnVW5rbm93bicpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05laXRoZXIgcGVwdGlkZSwgbm9yIG51Y2xlb3RpZGUnKTtcblxuICAgIGNvbnN0IHBvc3RmaXggPSAnfSQkJCc7XG4gICAgY29uc3QgbGVmdFdyYXBwZXIgPSAodGhpcy5pc0RuYSgpKSA/ICdEKCcgOlxuICAgICAgKHRoaXMuaXNSbmEoKSkgPyAnUignIDogJyc7IC8vIG5vIHdyYXBwZXIgZm9yIHBlcHRpZGVzXG4gICAgY29uc3QgcmlnaHRXcmFwcGVyID0gKHRoaXMuaXNEbmEoKSB8fCB0aGlzLmlzUm5hKCkpID8gJylQJyA6ICcnOyAvLyBubyB3cmFwcGVyIGZvciBwZXB0aWRlc1xuICAgIHJldHVybiBbcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4XTtcbiAgfVxuXG4gIC8vIEEgaGVscGVyIGZ1bmN0aW9uIGZvciBjb252ZXJ0aW5nIHN0cmluZ3MgdG8gSEVMTVxuICBwcml2YXRlIGNvbnZlcnRUb0hlbG1IZWxwZXIoXG4gICAgc291cmNlUG9seW1lcjogc3RyaW5nLFxuICAgIHNvdXJjZUdhcFN5bWJvbDogc3RyaW5nLFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIGxlZnRXcmFwcGVyOiBzdHJpbmcsXG4gICAgcmlnaHRXcmFwcGVyOiBzdHJpbmcsXG4gICAgcG9zdGZpeDogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgbW9ub21lckFycmF5ID0gdGhpcy5zcGxpdHRlcihzb3VyY2VQb2x5bWVyKTtcbiAgICBjb25zdCBtb25vbWVySGVsbUFycmF5OiBzdHJpbmdbXSA9IG1vbm9tZXJBcnJheS5tYXAoKG1tOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChtbSA9PT0gc291cmNlR2FwU3ltYm9sKVxuICAgICAgICByZXR1cm4gVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuSEVMTTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGAke2xlZnRXcmFwcGVyfSR7bW19JHtyaWdodFdyYXBwZXJ9YDtcbiAgICB9KTtcbiAgICByZXR1cm4gYCR7cHJlZml4fSR7bW9ub21lckhlbG1BcnJheS5qb2luKCcuJyl9JHtwb3N0Zml4fWA7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIHN0cmluZyB3aXRoIFNFUEFSQVRPUi9GQVNUQSBub3RhdGlvbiB0byBIRUxNXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VQb2x5bWVyICBBIHN0cmluZyB0byBiZSBjb252ZXJ0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBzb3VyY2VHYXBTeW1ib2wgIEFuIG9wdGlvbmFsIGdhcCBzeW1ib2wsIHNldCB0b1xuICAgKiBkZWZhdWx0IHZhbHVlcyAoJy0nIGZvciBGQVNUQSBhbmQgJycgZm9yIFNFUEFSQVRPUikgdW5sZXNzIHNwZWNpZmllZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICBUaGUgdGFyZ2V0IEhFTE0gc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgY29udmVydFN0cmluZ1RvSGVsbShcbiAgICBzb3VyY2VQb2x5bWVyOiBzdHJpbmcsXG4gICAgc291cmNlR2FwU3ltYm9sOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICApOiBzdHJpbmcge1xuICAgIGlmIChzb3VyY2VHYXBTeW1ib2wgPT09IG51bGwpXG4gICAgICBzb3VyY2VHYXBTeW1ib2wgPSB0aGlzLmRlZmF1bHRHYXBTeW1ib2w7XG4gICAgY29uc3QgW3ByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeF0gPSB0aGlzLmdldEhlbG1XcmFwcGVycygpO1xuICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG1IZWxwZXIoc291cmNlUG9seW1lciwgc291cmNlR2FwU3ltYm9sLCBwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBjb2x1bW4gdG8gSEVMTVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHNvdXJjZUdhcFN5bWJvbFxuICAgKiBAcmV0dXJuIHtERy5Db2x1bW59XG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRUb0hlbG0oc291cmNlR2FwU3ltYm9sOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IERHLkNvbHVtbiB7XG4gICAgaWYgKHNvdXJjZUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgIHNvdXJjZUdhcFN5bWJvbCA9IHRoaXMuZGVmYXVsdEdhcFN5bWJvbDtcblxuICAgIGNvbnN0IFtwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXhdID0gdGhpcy5nZXRIZWxtV3JhcHBlcnMoKTtcblxuICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKE5PVEFUSU9OLkhFTE0pO1xuICAgIC8vIGFzc2lnbiB0aGUgdmFsdWVzIHRvIHRoZSBlbXB0eSBjb2x1bW5cbiAgICBuZXdDb2x1bW4uaW5pdCgoaWR4OiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZVBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG1IZWxwZXIoc291cmNlUG9seW1lciwgc291cmNlR2FwU3ltYm9sISwgcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4KTtcbiAgICB9KTtcbiAgICBuZXdDb2x1bW4uc2V0VGFnKERHLlRBR1MuVU5JVFMsIE5PVEFUSU9OLkhFTE0pO1xuICAgIHJldHVybiBuZXdDb2x1bW47XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBTRVBBUkFUT1IgY29sdW1uIHRvIEZBU1RBIG5vdGF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gZmFzdGFHYXBTeW1ib2wgT3B0aW9uYWwgZ2FwIHN5bWJvbCBmb3IgRkFTVEFcbiAgICogQHJldHVybiB7REcuQ29sdW1ufSAgQ29udmVydGVkIGNvbHVtblxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0U2VwYXJhdG9yVG9GYXN0YShmYXN0YUdhcFN5bWJvbDogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiBERy5Db2x1bW4ge1xuICAgIGlmIChmYXN0YUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgIGZhc3RhR2FwU3ltYm9sID0gVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuRkFTVEE7XG5cbiAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihOT1RBVElPTi5GQVNUQSk7XG4gICAgLy8gYXNzaWduIHRoZSB2YWx1ZXMgdG8gdGhlIGVtcHR5IGNvbHVtblxuICAgIG5ld0NvbHVtbi5pbml0KChpZHg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3Qgc2VwYXJhdG9yUG9seW1lciA9IHRoaXMuY29sdW1uLmdldChpZHgpO1xuICAgICAgLy8gaXRlbXMgY2FuIGJlIG1vbm9tZXJzIG9yIHNlcGFyYXRvcnNcbiAgICAgIGNvbnN0IHNlcGFyYXRvckl0ZW1zQXJyYXkgPSB0aGlzLnNwbGl0dGVyKHNlcGFyYXRvclBvbHltZXIpO1xuICAgICAgY29uc3QgZmFzdGFNb25vbWVyc0FycmF5OiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXBhcmF0b3JJdGVtc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBzZXBhcmF0b3JJdGVtc0FycmF5W2ldO1xuICAgICAgICBpZiAoaXRlbS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXkucHVzaChmYXN0YUdhcFN5bWJvbCEpO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ubGVuZ3RoID4gMSkge1xuICAgICAgICAgIC8vIHRoZSBjYXNlIG9mIGEgbXVsdGktY2hhcmFjdGVyIG1vbm9tZXJcbiAgICAgICAgICBjb25zdCBtb25vbWVyID0gJ1snICsgaXRlbSArICddJztcbiAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXkucHVzaChtb25vbWVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmYXN0YU1vbm9tZXJzQXJyYXkucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhc3RhTW9ub21lcnNBcnJheS5qb2luKCcnKTtcbiAgICB9KTtcbiAgICBuZXdDb2x1bW4uc2V0VGFnKERHLlRBR1MuVU5JVFMsIE5PVEFUSU9OLkZBU1RBKTtcbiAgICByZXR1cm4gbmV3Q29sdW1uO1xuICB9XG5cbiAgLyoqXG4gICAqICBDb252ZXJ0IEhFTE0gY29sdW1uIHRvIEZBU1RBL1NFUEFSQVRPUlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGd0Tm90YXRpb24gICAgVGFyZ2V0IG5vdGF0aW9uOiBGQVNUQSBvciBTRVBBUkFUT1JcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRndFNlcGFyYXRvciAgIE9wdGlvbmFsIHRhcmdldCBzZXBhcmF0b3IgKGZvciBIRUxNIC0+XG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gdGd0R2FwU3ltYm9sICAgT3B0aW9uYWwgdGFyZ2V0IGdhcCBzeW1ib2xcbiAgICogU0VQQVJBVE9SKVxuICAgKiBAcmV0dXJuIHtERy5Db2x1bW59IENvbnZlcnRlZCBjb2x1bW5cbiAgICovXG4gIHByaXZhdGUgY29udmVydEhlbG0odGd0Tm90YXRpb246IHN0cmluZywgdGd0U2VwYXJhdG9yPzogc3RyaW5nLCB0Z3RHYXBTeW1ib2w/OiBzdHJpbmcpOiBERy5Db2x1bW4ge1xuICAgIC8vIFRoaXMgZnVuY3Rpb24gbXVzdCBub3QgY29udGFpbiBjYWxscyBvZiBpc0RuYSgpIGFuZCBpc1JuYSgpLCBmb3JcbiAgICAvLyBzb3VyY2UgaGVsbSBjb2x1bW5zIG1heSBjb250YWluIFJOQSwgRE5BIGFuZCBQVCBhY3Jvc3MgZGlmZmVyZW50IHJvd3NcbiAgICBpZiAoIXRndEdhcFN5bWJvbCkge1xuICAgICAgdGd0R2FwU3ltYm9sID0gKHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbiBhcyBOT1RBVElPTikpID9cbiAgICAgICAgVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuRkFTVEEgOlxuICAgICAgICBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5TRVBBUkFUT1I7XG4gICAgfVxuXG4gICAgaWYgKCF0Z3RTZXBhcmF0b3IpIHtcbiAgICAgIHRndFNlcGFyYXRvciA9ICh0aGlzLnRvRmFzdGEodGd0Tm90YXRpb24gYXMgTk9UQVRJT04pKSA/ICcnIDogdGhpcy5zZXBhcmF0b3I7XG4gICAgfVxuXG4gICAgY29uc3QgaGVsbVdyYXBwZXJzUmUgPSAvKFJcXCh8RFxcKHxcXCl8UCkvZztcbiAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbih0Z3ROb3RhdGlvbiBhcyBOT1RBVElPTik7XG4gICAgLy8gYXNzaWduIHRoZSB2YWx1ZXMgdG8gdGhlIGVtcHR5IGNvbHVtblxuICAgIG5ld0NvbHVtbi5pbml0KChpZHg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgaGVsbVBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcblxuICAgICAgLy8gd2UgY2Fubm90IHVzZSBpc0RuYSgpIG9yIGlzUm5hKCkgYmVjYXVzZSBzb3VyY2UgaGVsbSBjb2x1bW5zIGNhblxuICAgICAgLy8gY29udGFpbiBETkEsIFJOQSBhbmQgUFQgaW4gZGlmZmVyZW50IGNlbGxzLCBzbyB0aGUgY29ycmVzcG9uZGluZ1xuICAgICAgLy8gdGFncyBjYW5ub3QgYmUgc2V0IGZvciB0aGUgd2hvbGUgY29sdW1uXG4gICAgICBjb25zdCBpc051Y2xlb3RpZGUgPSBoZWxtUG9seW1lci5zdGFydHNXaXRoKCdETkEnKSB8fCBoZWxtUG9seW1lci5zdGFydHNXaXRoKCdSTkEnKTtcblxuICAgICAgLy8gaXRlbXMgY2FuIGJlIG1vbm9tZXJzIG9yIGhlbG1zXG4gICAgICBjb25zdCBoZWxtSXRlbXNBcnJheSA9IHRoaXMuc3BsaXR0ZXIoaGVsbVBvbHltZXIpO1xuICAgICAgY29uc3QgdGd0TW9ub21lcnNBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVsbUl0ZW1zQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGl0ZW0gPSBoZWxtSXRlbXNBcnJheVtpXTtcbiAgICAgICAgaWYgKGlzTnVjbGVvdGlkZSlcbiAgICAgICAgICBpdGVtID0gaXRlbS5yZXBsYWNlKGhlbG1XcmFwcGVyc1JlLCAnJyk7XG4gICAgICAgIGlmIChpdGVtID09PSBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5IRUxNKSB7XG4gICAgICAgICAgdGd0TW9ub21lcnNBcnJheS5wdXNoKHRndEdhcFN5bWJvbCEpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbiBhcyBOT1RBVElPTikgJiYgaXRlbS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gdGhlIGNhc2Ugb2YgYSBtdWx0aS1jaGFyYWN0ZXIgbW9ub21lciBjb252ZXJ0ZWQgdG8gRkFTVEFcbiAgICAgICAgICBjb25zdCBtb25vbWVyID0gJ1snICsgaXRlbSArICddJztcbiAgICAgICAgICB0Z3RNb25vbWVyc0FycmF5LnB1c2gobW9ub21lcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGd0TW9ub21lcnNBcnJheS5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGd0TW9ub21lcnNBcnJheS5qb2luKHRndFNlcGFyYXRvcik7XG4gICAgfSk7XG5cbiAgICAvLyBUQUdTLmFsaWduZWQgaXMgbWFuZGF0b3J5IGZvciBjb2x1bW5zIG9mIE5PVEFUSU9OLkZBU1RBIGFuZCBOT1RBVElPTi5TRVBBUkFUT1JcbiAgICBjb25zdCBzcGxpdHRlcjogU3BsaXR0ZXJGdW5jID0gZ2V0U3BsaXR0ZXJGb3JDb2x1bW4obmV3Q29sdW1uKTtcbiAgICBjb25zdCBzdGF0czogU2VxQ29sU3RhdHMgPSBnZXRTdGF0cyhuZXdDb2x1bW4sIDUsIHNwbGl0dGVyKTtcbiAgICBjb25zdCBhbGlnbmVkID0gc3RhdHMuc2FtZUxlbmd0aCA/ICdTRVEuTVNBJyA6ICdTRVEnO1xuICAgIG5ld0NvbHVtbi5zZXRUYWcoVEFHUy5hbGlnbmVkLCBhbGlnbmVkKTtcblxuICAgIHJldHVybiBuZXdDb2x1bW47XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRIZWxtVG9TZXBhcmF0b3IoKTogREcuQ29sdW1uIHtcbiAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKCk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKE5PVEFUSU9OLlNFUEFSQVRPUik7XG4gIH1cblxuICAvKiogRGlzcGF0Y2hlciBtZXRob2QgZm9yIG5vdGF0aW9uIGNvbnZlcnNpb25cbiAgICpcbiAgICogQHBhcmFtIHtOT1RBVElPTn0gdGd0Tm90YXRpb24gICBOb3RhdGlvbiB3ZSB3YW50IHRvIGNvbnZlcnQgdG9cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RTZXBhcmF0b3IgICBQb3NzaWJsZSBzZXBhcmF0b3JcbiAgICogQHJldHVybiB7REcuQ29sdW1ufSAgICAgICAgICAgICAgICBDb252ZXJ0ZWQgY29sdW1uXG4gICAqL1xuICBwdWJsaWMgY29udmVydCh0Z3ROb3RhdGlvbjogTk9UQVRJT04sIHRndFNlcGFyYXRvcjogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiBERy5Db2x1bW4ge1xuICAgIC8vIHBvc3NpYmxlIGV4Y2VwdGlvbnNcbiAgICBpZiAodGhpcy5ub3RhdGlvbiA9PT0gdGd0Tm90YXRpb24pXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RndCBub3RhdGlvbiBpcyBpbnZhbGlkJyk7XG4gICAgaWYgKHRoaXMudG9TZXBhcmF0b3IodGd0Tm90YXRpb24pICYmIHRndFNlcGFyYXRvciA9PT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBFcnJvcigndGd0IHNlcGFyYXRvciBpcyBub3Qgc3BlY2lmaWVkJyk7XG5cbiAgICBpZiAodGhpcy5pc0Zhc3RhKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbikgJiYgdGd0U2VwYXJhdG9yICE9PSBudWxsKVxuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEZhc3RhVG9TZXBhcmF0b3IodGd0U2VwYXJhdG9yKTtcbiAgICBlbHNlIGlmICgodGhpcy5pc0Zhc3RhKCkgfHwgdGhpcy5pc1NlcGFyYXRvcigpKSAmJiB0aGlzLnRvSGVsbSh0Z3ROb3RhdGlvbikpXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9IZWxtKCk7XG4gICAgZWxzZSBpZiAodGhpcy5pc1NlcGFyYXRvcigpICYmIHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikpXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0U2VwYXJhdG9yVG9GYXN0YSgpO1xuICAgIGVsc2UgaWYgKHRoaXMuaXNIZWxtKCkgJiYgdGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSkgLy8gdGhlIGNhc2Ugb2YgSEVMTVxuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEhlbG0odGd0Tm90YXRpb24pO1xuICAgIGVsc2UgaWYgKHRoaXMuaXNIZWxtKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbikpXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0SGVsbSh0Z3ROb3RhdGlvbiwgdGd0U2VwYXJhdG9yISk7XG4gICAgZWxzZVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIGNvbnZlcnNpb24gJyArXG4gICAgICAgIGBmcm9tIHNvdXJjZSBub3RhdGlvbiAnJHt0aGlzLm5vdGF0aW9ufScgdG8gdGFyZ2V0IG5vdGF0aW9uICcke3RndE5vdGF0aW9ufScuYCk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoY29sOiBERy5Db2x1bW4pIHtcbiAgICBzdXBlcihjb2wpO1xuICB9XG59XG4iXX0=
|
|
1406
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90YXRpb24tY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibm90YXRpb24tY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxRQUFRLEVBQTRDLE1BQU0saUJBQWlCLENBQUM7QUFFMUcsaUZBQWlGO0FBQ2pGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxZQUFZO0lBR2pELElBQWMsUUFBUTtRQUNwQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSTtZQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxjQUF3QixJQUFhLE9BQU8sY0FBYyxpQ0FBbUIsQ0FBQyxDQUFDLENBQUM7SUFFeEYsV0FBVyxDQUFDLGNBQXdCLElBQWEsT0FBTyxjQUFjLHlDQUF1QixDQUFDLENBQUMsQ0FBQztJQUVoRyxNQUFNLENBQUMsY0FBd0IsSUFBYSxPQUFPLGNBQWMsK0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBRTdGOzs7Ozs7T0FNRztJQUNLLHVCQUF1QixDQUFDLFNBQWlCLEVBQUUsaUJBQWdDLElBQUk7UUFDckYsSUFBSSxjQUFjLEtBQUssSUFBSTtZQUN6QixjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRXpDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLHNDQUFvQixDQUFDO1FBQ3hELHNEQUFzRDtRQUN0RCxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FB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SSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLFlBQWEsQ0FBQyxDQUFDOztZQUVwRCxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQjtnQkFDekMseUJBQXlCLElBQUksQ0FBQyxRQUFRLHlCQUF5QixXQUFXLElBQUksQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxZQUFtQixHQUFjO1FBQy9CLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQTdRTCxjQUFTLEdBQXdCLElBQUksQ0FBQztJQThROUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogRG8gbm90IGNoYW5nZSB0aGVzZSBpbXBvcnQgbGluZXMgdG8gbWF0Y2ggZXh0ZXJuYWwgbW9kdWxlcyBpbiB3ZWJwYWNrIGNvbmZpZ3VyYXRpb24gKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5cbmltcG9ydCB7VW5pdHNIYW5kbGVyfSBmcm9tICcuL3VuaXRzLWhhbmRsZXInO1xuaW1wb3J0IHtnZXRTcGxpdHRlckZvckNvbHVtbiwgZ2V0U3RhdHMsIE5PVEFUSU9OLCBTZXFDb2xTdGF0cywgU3BsaXR0ZXJGdW5jLCBUQUdTfSBmcm9tICcuL21hY3JvbW9sZWN1bGUnO1xuXG4vKiogQ2xhc3MgZm9yIGhhbmRsaW5nIGNvbnZlcnNpb24gb2Ygbm90YXRpb24gc3lzdGVtcyBpbiBNYWNyb21vbGVjdWxlIGNvbHVtbnMgKi9cbmV4cG9ydCBjbGFzcyBOb3RhdGlvbkNvbnZlcnRlciBleHRlbmRzIFVuaXRzSGFuZGxlciB7XG4gIHByaXZhdGUgX3NwbGl0dGVyOiBTcGxpdHRlckZ1bmMgfCBudWxsID0gbnVsbDtcblxuICBwcm90ZWN0ZWQgZ2V0IHNwbGl0dGVyKCk6IFNwbGl0dGVyRnVuYyB7XG4gICAgaWYgKHRoaXMuX3NwbGl0dGVyID09PSBudWxsKVxuICAgICAgdGhpcy5fc3BsaXR0ZXIgPSBnZXRTcGxpdHRlckZvckNvbHVtbih0aGlzLmNvbHVtbik7XG4gICAgcmV0dXJuIHRoaXMuX3NwbGl0dGVyO1xuICB9XG5cbiAgcHVibGljIHRvRmFzdGEodGFyZ2V0Tm90YXRpb246IE5PVEFUSU9OKTogYm9vbGVhbiB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gTk9UQVRJT04uRkFTVEE7IH1cblxuICBwdWJsaWMgdG9TZXBhcmF0b3IodGFyZ2V0Tm90YXRpb246IE5PVEFUSU9OKTogYm9vbGVhbiB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gTk9UQVRJT04uU0VQQVJBVE9SOyB9XG5cbiAgcHVibGljIHRvSGVsbSh0YXJnZXROb3RhdGlvbjogTk9UQVRJT04pOiBib29sZWFuIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBOT1RBVElPTi5IRUxNOyB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBNYWNyb21vbGVjdWxlIGNvbHVtbiBmcm9tIEZBU1RBIHRvIFNFUEFSQVRPUiBub3RhdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VwYXJhdG9yICBBIHNwZWNpZmljIHNlcGFyYXRvciB0byBiZSB1c2VkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmYXN0YUdhcFN5bWJvbCAgR2FwIHN5bWJvbCBpbiBGQVNUQSwgJy0nIGJ5IGRlZmF1bHRcbiAgICogQHJldHVybiB7REcuQ29sdW1ufSAgICAgICAgQSBuZXcgY29sdW1uIGluIFNFUEFSQVRPUiBub3RhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0RmFzdGFUb1NlcGFyYXRvcihzZXBhcmF0b3I6IHN0cmluZywgZmFzdGFHYXBTeW1ib2w6IHN0cmluZyB8IG51bGwgPSBudWxsKTogREcuQ29sdW1uIHtcbiAgICBpZiAoZmFzdGFHYXBTeW1ib2wgPT09IG51bGwpXG4gICAgICBmYXN0YUdhcFN5bWJvbCA9IHRoaXMuZGVmYXVsdEdhcFN5bWJvbDtcblxuICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKE5PVEFUSU9OLlNFUEFSQVRPUik7XG4gICAgLy8gYXNzaWduIHRoZSB2YWx1ZXMgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgZW1wdHkgY29sdW1uXG4gICAgbmV3Q29sdW1uLmluaXQoKGlkeDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBmYXN0YVBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgIGNvbnN0IGZhc3RhTW9ub21lcnNBcnJheSA9IHRoaXMuc3BsaXR0ZXIoZmFzdGFQb2x5bWVyKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmFzdGFNb25vbWVyc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChmYXN0YU1vbm9tZXJzQXJyYXlbaV0gPT09IGZhc3RhR2FwU3ltYm9sKVxuICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheVtpXSA9IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LlNFUEFSQVRPUjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYXN0YU1vbm9tZXJzQXJyYXkuam9pbihzZXBhcmF0b3IpO1xuICAgIH0pO1xuICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgTk9UQVRJT04uU0VQQVJBVE9SKTtcbiAgICBuZXdDb2x1bW4uc2V0VGFnKFRBR1Muc2VwYXJhdG9yLCBzZXBhcmF0b3IpO1xuICAgIHJldHVybiBuZXdDb2x1bW47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB3cmFwcGVyIHN0cmluZ3MgZm9yIEhFTE0sIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0aGVcbiAgICogbWFjcm9tb2xlY3VsZSAocGVwdGlkZSwgRE5BLCBSTkEpXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSBBcnJheSBvZiB3cmFwcGVyc1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRIZWxtV3JhcHBlcnMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHByZWZpeCA9ICh0aGlzLmlzRG5hKCkpID8gJ0ROQTF7JyA6XG4gICAgICAodGhpcy5pc1JuYSgpKSA/ICdSTkExeycgOlxuICAgICAgICAodGhpcy5pc1BlcHRpZGUoKSkgPyAnUEVQVElERTF7JyA6XG4gICAgICAgICAgJ1Vua25vd24nOyAvLyB0aGlzIGNhc2Ugc2hvdWxkIGJlIGhhbmRsZWQgYXMgZXhjZXB0aW9uYWxcblxuICAgIGlmIChwcmVmaXggPT09ICdVbmtub3duJylcbiAgICAgIHRocm93IG5ldyBFcnJvcignTmVpdGhlciBwZXB0aWRlLCBub3IgbnVjbGVvdGlkZScpO1xuXG4gICAgY29uc3QgcG9zdGZpeCA9ICd9JCQkJztcbiAgICBjb25zdCBsZWZ0V3JhcHBlciA9ICh0aGlzLmlzRG5hKCkpID8gJ0QoJyA6XG4gICAgICAodGhpcy5pc1JuYSgpKSA/ICdSKCcgOiAnJzsgLy8gbm8gd3JhcHBlciBmb3IgcGVwdGlkZXNcbiAgICBjb25zdCByaWdodFdyYXBwZXIgPSAodGhpcy5pc0RuYSgpIHx8IHRoaXMuaXNSbmEoKSkgPyAnKVAnIDogJyc7IC8vIG5vIHdyYXBwZXIgZm9yIHBlcHRpZGVzXG4gICAgcmV0dXJuIFtwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXhdO1xuICB9XG5cbiAgLy8gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNvbnZlcnRpbmcgc3RyaW5ncyB0byBIRUxNXG4gIHByaXZhdGUgY29udmVydFRvSGVsbUhlbHBlcihcbiAgICBzb3VyY2VQb2x5bWVyOiBzdHJpbmcsXG4gICAgc291cmNlR2FwU3ltYm9sOiBzdHJpbmcsXG4gICAgcHJlZml4OiBzdHJpbmcsXG4gICAgbGVmdFdyYXBwZXI6IHN0cmluZyxcbiAgICByaWdodFdyYXBwZXI6IHN0cmluZyxcbiAgICBwb3N0Zml4OiBzdHJpbmdcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBtb25vbWVyQXJyYXkgPSB0aGlzLnNwbGl0dGVyKHNvdXJjZVBvbHltZXIpO1xuICAgIGNvbnN0IG1vbm9tZXJIZWxtQXJyYXk6IHN0cmluZ1tdID0gbW9ub21lckFycmF5Lm1hcCgobW06IHN0cmluZykgPT4ge1xuICAgICAgaWYgKG1tID09PSBzb3VyY2VHYXBTeW1ib2wpXG4gICAgICAgIHJldHVybiBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5IRUxNO1xuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gYCR7bGVmdFdyYXBwZXJ9JHttbX0ke3JpZ2h0V3JhcHBlcn1gO1xuICAgIH0pO1xuICAgIHJldHVybiBgJHtwcmVmaXh9JHttb25vbWVySGVsbUFycmF5LmpvaW4oJy4nKX0ke3Bvc3RmaXh9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgc3RyaW5nIHdpdGggU0VQQVJBVE9SL0ZBU1RBIG5vdGF0aW9uIHRvIEhFTE1cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVBvbHltZXIgIEEgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHNvdXJjZUdhcFN5bWJvbCAgQW4gb3B0aW9uYWwgZ2FwIHN5bWJvbCwgc2V0IHRvXG4gICAqIGRlZmF1bHQgdmFsdWVzICgnLScgZm9yIEZBU1RBIGFuZCAnJyBmb3IgU0VQQVJBVE9SKSB1bmxlc3Mgc3BlY2lmaWVkXG4gICAqIEByZXR1cm4ge3N0cmluZ30gIFRoZSB0YXJnZXQgSEVMTSBzdHJpbmdcbiAgICovXG4gIHB1YmxpYyBjb252ZXJ0U3RyaW5nVG9IZWxtKFxuICAgIHNvdXJjZVBvbHltZXI6IHN0cmluZyxcbiAgICBzb3VyY2VHYXBTeW1ib2w6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKHNvdXJjZUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgIHNvdXJjZUdhcFN5bWJvbCA9IHRoaXMuZGVmYXVsdEdhcFN5bWJvbDtcbiAgICBjb25zdCBbcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4XSA9IHRoaXMuZ2V0SGVsbVdyYXBwZXJzKCk7XG4gICAgcmV0dXJuIHRoaXMuY29udmVydFRvSGVsbUhlbHBlcihzb3VyY2VQb2x5bWVyLCBzb3VyY2VHYXBTeW1ib2wsIHByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeCk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIGNvbHVtbiB0byBIRUxNXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gc291cmNlR2FwU3ltYm9sXG4gICAqIEByZXR1cm4ge0RHLkNvbHVtbn1cbiAgICovXG4gIHByaXZhdGUgY29udmVydFRvSGVsbShzb3VyY2VHYXBTeW1ib2w6IHN0cmluZyB8IG51bGwgPSBudWxsKTogREcuQ29sdW1uIHtcbiAgICBpZiAoc291cmNlR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgc291cmNlR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuXG4gICAgY29uc3QgW3ByZWZpeCwgbGVmdFdyYXBwZXIsIHJpZ2h0V3JhcHBlciwgcG9zdGZpeF0gPSB0aGlzLmdldEhlbG1XcmFwcGVycygpO1xuXG4gICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4oTk9UQVRJT04uSEVMTSk7XG4gICAgLy8gYXNzaWduIHRoZSB2YWx1ZXMgdG8gdGhlIGVtcHR5IGNvbHVtblxuICAgIG5ld0NvbHVtbi5pbml0KChpZHg6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3Qgc291cmNlUG9seW1lciA9IHRoaXMuY29sdW1uLmdldChpZHgpO1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRvSGVsbUhlbHBlcihzb3VyY2VQb2x5bWVyLCBzb3VyY2VHYXBTeW1ib2whLCBwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXgpO1xuICAgIH0pO1xuICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgTk9UQVRJT04uSEVMTSk7XG4gICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IFNFUEFSQVRPUiBjb2x1bW4gdG8gRkFTVEEgbm90YXRpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBmYXN0YUdhcFN5bWJvbCBPcHRpb25hbCBnYXAgc3ltYm9sIGZvciBGQVNUQVxuICAgKiBAcmV0dXJuIHtERy5Db2x1bW59ICBDb252ZXJ0ZWQgY29sdW1uXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRTZXBhcmF0b3JUb0Zhc3RhKGZhc3RhR2FwU3ltYm9sOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IERHLkNvbHVtbiB7XG4gICAgaWYgKGZhc3RhR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgZmFzdGFHYXBTeW1ib2wgPSBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5GQVNUQTtcblxuICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKE5PVEFUSU9OLkZBU1RBKTtcbiAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgbmV3Q29sdW1uLmluaXQoKGlkeDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBzZXBhcmF0b3JQb2x5bWVyID0gdGhpcy5jb2x1bW4uZ2V0KGlkeCk7XG4gICAgICAvLyBpdGVtcyBjYW4gYmUgbW9ub21lcnMgb3Igc2VwYXJhdG9yc1xuICAgICAgY29uc3Qgc2VwYXJhdG9ySXRlbXNBcnJheSA9IHRoaXMuc3BsaXR0ZXIoc2VwYXJhdG9yUG9seW1lcik7XG4gICAgICBjb25zdCBmYXN0YU1vbm9tZXJzQXJyYXk6IHN0cmluZ1tdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcGFyYXRvckl0ZW1zQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHNlcGFyYXRvckl0ZW1zQXJyYXlbaV07XG4gICAgICAgIGlmIChpdGVtLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKGZhc3RhR2FwU3ltYm9sISk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gdGhlIGNhc2Ugb2YgYSBtdWx0aS1jaGFyYWN0ZXIgbW9ub21lclxuICAgICAgICAgIGNvbnN0IG1vbm9tZXIgPSAnWycgKyBpdGVtICsgJ10nO1xuICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKG1vbm9tZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFzdGFNb25vbWVyc0FycmF5LmpvaW4oJycpO1xuICAgIH0pO1xuICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgTk9UQVRJT04uRkFTVEEpO1xuICAgIHJldHVybiBuZXdDb2x1bW47XG4gIH1cblxuICAvKipcbiAgICogIENvbnZlcnQgSEVMTSBzdHJpbmcgdG8gRkFTVEEvU0VQQVJBVE9SXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBoZWxtUG9seW1lciAgICBBIHN0cmluZyB0byBiZSBjb252ZXJ0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRndE5vdGF0aW9uICAgIFRhcmdldCBub3RhdGlvbjogRkFTVEEgb3IgU0VQQVJBVE9SXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0Z3RTZXBhcmF0b3IgICBPcHRpb25hbCB0YXJnZXQgc2VwYXJhdG9yIChmb3IgSEVMTSAtPlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHRndEdhcFN5bWJvbCAgIE9wdGlvbmFsIHRhcmdldCBnYXAgc3ltYm9sXG4gICAqIFNFUEFSQVRPUilcbiAgICogQHJldHVybiB7c3RyaW5nfSBDb252ZXJ0ZWQgc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgY29udmVydEhlbG1Ub0Zhc3RhU2VwYXJhdG9yKFxuICAgIGhlbG1Qb2x5bWVyOiBzdHJpbmcsIFxuICAgIHRndE5vdGF0aW9uOiBzdHJpbmcsIFxuICAgIHRndFNlcGFyYXRvcj86IHN0cmluZywgXG4gICAgdGd0R2FwU3ltYm9sPzogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKCF0Z3RHYXBTeW1ib2wpIHtcbiAgICAgIHRndEdhcFN5bWJvbCA9ICh0aGlzLnRvRmFzdGEodGd0Tm90YXRpb24gYXMgTk9UQVRJT04pKSA/XG4gICAgICAgIFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkZBU1RBIDpcbiAgICAgICAgVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuU0VQQVJBVE9SO1xuICAgIH1cblxuICAgIGlmICghdGd0U2VwYXJhdG9yKSB7XG4gICAgICB0Z3RTZXBhcmF0b3IgPSAodGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uIGFzIE5PVEFUSU9OKSkgPyAnJyA6IHRoaXMuc2VwYXJhdG9yO1xuICAgIH1cbiAgICBjb25zdCBoZWxtV3JhcHBlcnNSZSA9IC8oUlxcKHxEXFwofFxcKXxQKS9nO1xuICAgIGNvbnN0IGlzTnVjbGVvdGlkZSA9IGhlbG1Qb2x5bWVyLnN0YXJ0c1dpdGgoJ0ROQScpIHx8IGhlbG1Qb2x5bWVyLnN0YXJ0c1dpdGgoJ1JOQScpO1xuICAgIC8vIGl0ZW1zIGNhbiBiZSBtb25vbWVycyBvciBoZWxtc1xuICAgIGNvbnN0IGhlbG1JdGVtc0FycmF5ID0gdGhpcy5zcGxpdHRlcihoZWxtUG9seW1lcik7XG4gICAgY29uc3QgdGd0TW9ub21lcnNBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlbG1JdGVtc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgaXRlbSA9IGhlbG1JdGVtc0FycmF5W2ldO1xuICAgICAgaWYgKGlzTnVjbGVvdGlkZSlcbiAgICAgICAgaXRlbSA9IGl0ZW0ucmVwbGFjZShoZWxtV3JhcHBlcnNSZSwgJycpO1xuICAgICAgaWYgKGl0ZW0gPT09IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkhFTE0pIHtcbiAgICAgICAgdGd0TW9ub21lcnNBcnJheS5wdXNoKHRndEdhcFN5bWJvbCEpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnRvRmFzdGEodGd0Tm90YXRpb24gYXMgTk9UQVRJT04pICYmIGl0ZW0ubGVuZ3RoID4gMSkge1xuICAgICAgICAvLyB0aGUgY2FzZSBvZiBhIG11bHRpLWNoYXJhY3RlciBtb25vbWVyIGNvbnZlcnRlZCB0byBGQVNUQVxuICAgICAgICBjb25zdCBtb25vbWVyID0gJ1snICsgaXRlbSArICddJztcbiAgICAgICAgdGd0TW9ub21lcnNBcnJheS5wdXNoKG1vbm9tZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGd0TW9ub21lcnNBcnJheS5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGd0TW9ub21lcnNBcnJheS5qb2luKHRndFNlcGFyYXRvcik7XG4gIH1cblxuICAvKipcbiAgICogIENvbnZlcnQgSEVMTSBjb2x1bW4gdG8gRkFTVEEvU0VQQVJBVE9SXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0Z3ROb3RhdGlvbiAgICBUYXJnZXQgbm90YXRpb246IEZBU1RBIG9yIFNFUEFSQVRPUlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGd0U2VwYXJhdG9yICAgT3B0aW9uYWwgdGFyZ2V0IHNlcGFyYXRvciAoZm9yIEhFTE0gLT5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RHYXBTeW1ib2wgICBPcHRpb25hbCB0YXJnZXQgZ2FwIHN5bWJvbFxuICAgKiBTRVBBUkFUT1IpXG4gICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gQ29udmVydGVkIGNvbHVtblxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0SGVsbSh0Z3ROb3RhdGlvbjogc3RyaW5nLCB0Z3RTZXBhcmF0b3I/OiBzdHJpbmcsIHRndEdhcFN5bWJvbD86IHN0cmluZyk6IERHLkNvbHVtbiB7XG4gICAgLy8gVGhpcyBmdW5jdGlvbiBtdXN0IG5vdCBjb250YWluIGNhbGxzIG9mIGlzRG5hKCkgYW5kIGlzUm5hKCksIGZvclxuICAgIC8vIHNvdXJjZSBoZWxtIGNvbHVtbnMgbWF5IGNvbnRhaW4gUk5BLCBETkEgYW5kIFBUIGFjcm9zcyBkaWZmZXJlbnQgcm93c1xuICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKHRndE5vdGF0aW9uIGFzIE5PVEFUSU9OKTtcbiAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgbmV3Q29sdW1uLmluaXQoKGlkeDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBoZWxtUG9seW1lciA9IHRoaXMuY29sdW1uLmdldChpZHgpO1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEhlbG1Ub0Zhc3RhU2VwYXJhdG9yKGhlbG1Qb2x5bWVyLCB0Z3ROb3RhdGlvbiwgdGd0U2VwYXJhdG9yLCB0Z3RHYXBTeW1ib2wpO1xuICAgICAgLy8gd2UgY2Fubm90IHVzZSBpc0RuYSgpIG9yIGlzUm5hKCkgYmVjYXVzZSBzb3VyY2UgaGVsbSBjb2x1bW5zIGNhblxuICAgICAgLy8gY29udGFpbiBETkEsIFJOQSBhbmQgUFQgaW4gZGlmZmVyZW50IGNlbGxzLCBzbyB0aGUgY29ycmVzcG9uZGluZ1xuICAgICAgLy8gdGFncyBjYW5ub3QgYmUgc2V0IGZvciB0aGUgd2hvbGUgY29sdW1uXG4gICAgfSk7XG5cbiAgICAvLyBUQUdTLmFsaWduZWQgaXMgbWFuZGF0b3J5IGZvciBjb2x1bW5zIG9mIE5PVEFUSU9OLkZBU1RBIGFuZCBOT1RBVElPTi5TRVBBUkFUT1JcbiAgICBjb25zdCBzcGxpdHRlcjogU3BsaXR0ZXJGdW5jID0gZ2V0U3BsaXR0ZXJGb3JDb2x1bW4obmV3Q29sdW1uKTtcbiAgICBjb25zdCBzdGF0czogU2VxQ29sU3RhdHMgPSBnZXRTdGF0cyhuZXdDb2x1bW4sIDUsIHNwbGl0dGVyKTtcbiAgICBjb25zdCBhbGlnbmVkID0gc3RhdHMuc2FtZUxlbmd0aCA/ICdTRVEuTVNBJyA6ICdTRVEnO1xuICAgIG5ld0NvbHVtbi5zZXRUYWcoVEFHUy5hbGlnbmVkLCBhbGlnbmVkKTtcblxuICAgIHJldHVybiBuZXdDb2x1bW47XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRIZWxtVG9TZXBhcmF0b3IoKTogREcuQ29sdW1uIHtcbiAgICAvLyBUT0RPOiBpbXBsZW1lbnRhdGlvcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKCk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKE5PVEFUSU9OLlNFUEFSQVRPUik7XG4gIH1cblxuICAvKiogRGlzcGF0Y2hlciBtZXRob2QgZm9yIG5vdGF0aW9uIGNvbnZlcnNpb25cbiAgICpcbiAgICogQHBhcmFtIHtOT1RBVElPTn0gdGd0Tm90YXRpb24gICBOb3RhdGlvbiB3ZSB3YW50IHRvIGNvbnZlcnQgdG9cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RTZXBhcmF0b3IgICBQb3NzaWJsZSBzZXBhcmF0b3JcbiAgICogQHJldHVybiB7REcuQ29sdW1ufSAgICAgICAgICAgICAgICBDb252ZXJ0ZWQgY29sdW1uXG4gICAqL1xuICBwdWJsaWMgY29udmVydCh0Z3ROb3RhdGlvbjogTk9UQVRJT04sIHRndFNlcGFyYXRvcjogc3RyaW5nIHwgbnVsbCA9IG51bGwpOiBERy5Db2x1bW4ge1xuICAgIC8vIHBvc3NpYmxlIGV4Y2VwdGlvbnNcbiAgICBpZiAodGhpcy5ub3RhdGlvbiA9PT0gdGd0Tm90YXRpb24pXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RndCBub3RhdGlvbiBpcyBpbnZhbGlkJyk7XG4gICAgaWYgKHRoaXMudG9TZXBhcmF0b3IodGd0Tm90YXRpb24pICYmIHRndFNlcGFyYXRvciA9PT0gbnVsbClcbiAgICAgIHRocm93IG5ldyBFcnJvcigndGd0IHNlcGFyYXRvciBpcyBub3Qgc3BlY2lmaWVkJyk7XG5cbiAgICBpZiAodGhpcy5pc0Zhc3RhKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbikgJiYgdGd0U2VwYXJhdG9yICE9PSBudWxsKVxuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEZhc3RhVG9TZXBhcmF0b3IodGd0U2VwYXJhdG9yKTtcbiAgICBlbHNlIGlmICgodGhpcy5pc0Zhc3RhKCkgfHwgdGhpcy5pc1NlcGFyYXRvcigpKSAmJiB0aGlzLnRvSGVsbSh0Z3ROb3RhdGlvbikpXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9IZWxtKCk7XG4gICAgZWxzZSBpZiAodGhpcy5pc1NlcGFyYXRvcigpICYmIHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikpXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0U2VwYXJhdG9yVG9GYXN0YSgpO1xuICAgIGVsc2UgaWYgKHRoaXMuaXNIZWxtKCkgJiYgdGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSkgLy8gdGhlIGNhc2Ugb2YgSEVMTVxuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEhlbG0odGd0Tm90YXRpb24pO1xuICAgIGVsc2UgaWYgKHRoaXMuaXNIZWxtKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbikpXG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0SGVsbSh0Z3ROb3RhdGlvbiwgdGd0U2VwYXJhdG9yISk7XG4gICAgZWxzZVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIGNvbnZlcnNpb24gJyArXG4gICAgICAgIGBmcm9tIHNvdXJjZSBub3RhdGlvbiAnJHt0aGlzLm5vdGF0aW9ufScgdG8gdGFyZ2V0IG5vdGF0aW9uICcke3RndE5vdGF0aW9ufScuYCk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoY29sOiBERy5Db2x1bW4pIHtcbiAgICBzdXBlcihjb2wpO1xuICB9XG59XG4iXX0=
|
|
1394
1407
|
|
|
1395
1408
|
/***/ }),
|
|
1396
1409
|
|
|
@@ -2181,10 +2194,6 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
2181
2194
|
/* harmony export */ "editMoleculeCell": () => (/* binding */ editMoleculeCell),
|
|
2182
2195
|
/* harmony export */ "getMolfiles": () => (/* binding */ getMolfiles),
|
|
2183
2196
|
/* harmony export */ "helmCellRenderer": () => (/* binding */ helmCellRenderer),
|
|
2184
|
-
/* harmony export */ "helmToFasta": () => (/* binding */ helmToFasta),
|
|
2185
|
-
/* harmony export */ "helmToPeptide": () => (/* binding */ helmToPeptide),
|
|
2186
|
-
/* harmony export */ "helmToRNA": () => (/* binding */ helmToRNA),
|
|
2187
|
-
/* harmony export */ "helmToSmiles": () => (/* binding */ helmToSmiles),
|
|
2188
2197
|
/* harmony export */ "helmWebEditor": () => (/* binding */ helmWebEditor),
|
|
2189
2198
|
/* harmony export */ "initHelm": () => (/* binding */ initHelm),
|
|
2190
2199
|
/* harmony export */ "openEditor": () => (/* binding */ openEditor),
|
|
@@ -2299,15 +2308,22 @@ function rewriteLibraries() {
|
|
|
2299
2308
|
function helmCellRenderer() {
|
|
2300
2309
|
return new _cell_renderer__WEBPACK_IMPORTED_MODULE_5__.HelmCellRenderer();
|
|
2301
2310
|
}
|
|
2311
|
+
function checkMonomersAndOpenWebEditor(cell, value, units) {
|
|
2312
|
+
const cellValue = typeof units === 'undefined' ? cell.value : value;
|
|
2313
|
+
const monomers = (0,_utils__WEBPACK_IMPORTED_MODULE_7__.findMonomers)(cellValue);
|
|
2314
|
+
if (monomers.size == 0)
|
|
2315
|
+
webEditor(cell, value, units);
|
|
2316
|
+
else
|
|
2317
|
+
datagrok_api_grok__WEBPACK_IMPORTED_MODULE_0__.shell.warning(`Monomers ${Array.from(monomers).join(', ')} are absent! <br/>` +
|
|
2318
|
+
`Please, upload the monomer library! <br/>` +
|
|
2319
|
+
`<a href="https://datagrok.ai/help/domains/bio/macromolecules" target="_blank">Learn more</a>`);
|
|
2320
|
+
}
|
|
2302
2321
|
//tags: cellEditor
|
|
2303
|
-
//description: Macromolecule
|
|
2322
|
+
//description: Macromolecule
|
|
2304
2323
|
//input: grid_cell cell
|
|
2324
|
+
//meta.columnTags: quality=Macromolecule, units=helm
|
|
2305
2325
|
function editMoleculeCell(cell) {
|
|
2306
|
-
|
|
2307
|
-
if (cell.gridColumn.column.tags[datagrok_api_dg__WEBPACK_IMPORTED_MODULE_2__.TAGS.UNITS] === 'helm' && monomers.size === 0)
|
|
2308
|
-
webEditor(cell);
|
|
2309
|
-
else
|
|
2310
|
-
datagrok_api_grok__WEBPACK_IMPORTED_MODULE_0__.shell.warning(`Monomers ${Array.from(monomers).join(', ')} are absent!`);
|
|
2326
|
+
checkMonomersAndOpenWebEditor(cell.cell, undefined, undefined);
|
|
2311
2327
|
}
|
|
2312
2328
|
//name: Open Helm Web Editor
|
|
2313
2329
|
//description: Adds editor
|
|
@@ -2315,9 +2331,10 @@ function editMoleculeCell(cell) {
|
|
|
2315
2331
|
//input: string mol { semType: Macromolecule }
|
|
2316
2332
|
function openEditor(mol) {
|
|
2317
2333
|
let df = datagrok_api_grok__WEBPACK_IMPORTED_MODULE_0__.shell.tv.grid.dataFrame;
|
|
2318
|
-
let
|
|
2334
|
+
let col = df.columns.bySemType('Macromolecule');
|
|
2335
|
+
let converter = new _datagrok_libraries_bio_src_utils_notation_converter__WEBPACK_IMPORTED_MODULE_6__.NotationConverter(col);
|
|
2319
2336
|
const resStr = converter.convertStringToHelm(mol, '/');
|
|
2320
|
-
|
|
2337
|
+
checkMonomersAndOpenWebEditor(df.currentCell, resStr, col.getTag(datagrok_api_dg__WEBPACK_IMPORTED_MODULE_2__.TAGS.UNITS));
|
|
2321
2338
|
}
|
|
2322
2339
|
//name: Properties
|
|
2323
2340
|
//tags: panel, widgets
|
|
@@ -2344,8 +2361,10 @@ function propertiesPanel(helmString) {
|
|
|
2344
2361
|
}));
|
|
2345
2362
|
});
|
|
2346
2363
|
}
|
|
2347
|
-
function webEditor(cell, value) {
|
|
2364
|
+
function webEditor(cell, value, units) {
|
|
2348
2365
|
let view = datagrok_api_ui__WEBPACK_IMPORTED_MODULE_1__.div();
|
|
2366
|
+
let df = datagrok_api_grok__WEBPACK_IMPORTED_MODULE_0__.shell.tv.grid.dataFrame;
|
|
2367
|
+
let converter = new _datagrok_libraries_bio_src_utils_notation_converter__WEBPACK_IMPORTED_MODULE_6__.NotationConverter(df.columns.bySemType('Macromolecule'));
|
|
2349
2368
|
org.helm.webeditor.MolViewer.molscale = 0.8;
|
|
2350
2369
|
let app = new scil.helm.App(view, {
|
|
2351
2370
|
showabout: false,
|
|
@@ -2370,8 +2389,8 @@ function webEditor(cell, value) {
|
|
|
2370
2389
|
app.structureview.resize(sizes.rightwidth, sizes.bottomheight + app.toolbarheight);
|
|
2371
2390
|
app.mex.resize(sizes.topheight - 80);
|
|
2372
2391
|
setTimeout(function () {
|
|
2373
|
-
if (typeof
|
|
2374
|
-
app.canvas.helm.setSequence(cell.
|
|
2392
|
+
if (typeof units === 'undefined') {
|
|
2393
|
+
app.canvas.helm.setSequence(cell.value, 'HELM');
|
|
2375
2394
|
}
|
|
2376
2395
|
else {
|
|
2377
2396
|
app.canvas.helm.setSequence(value, 'HELM');
|
|
@@ -2381,63 +2400,16 @@ function webEditor(cell, value) {
|
|
|
2381
2400
|
datagrok_api_ui__WEBPACK_IMPORTED_MODULE_1__.dialog({ showHeader: false, showFooter: true })
|
|
2382
2401
|
.add(view)
|
|
2383
2402
|
.onOK(() => {
|
|
2384
|
-
|
|
2385
|
-
|
|
2403
|
+
let helmValue = app.canvas.getHelm(true).replace(/<\/span>/g, '').replace(/<span style='background:#bbf;'>/g, '');
|
|
2404
|
+
if (typeof units === 'undefined') {
|
|
2405
|
+
cell.value = helmValue;
|
|
2406
|
+
}
|
|
2407
|
+
else {
|
|
2408
|
+
let convertedRes = converter.convertHelmToFastaSeparator(helmValue, units);
|
|
2409
|
+
cell.value = convertedRes;
|
|
2386
2410
|
}
|
|
2387
2411
|
}).show({ modal: true, fullScreen: true });
|
|
2388
2412
|
}
|
|
2389
|
-
function accessServer(url, key) {
|
|
2390
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
2391
|
-
const params = {
|
|
2392
|
-
method: 'GET',
|
|
2393
|
-
headers: {
|
|
2394
|
-
'Accept': 'application/json',
|
|
2395
|
-
}
|
|
2396
|
-
};
|
|
2397
|
-
const response = yield fetch(url, params);
|
|
2398
|
-
const json = yield response.json();
|
|
2399
|
-
return json[key];
|
|
2400
|
-
});
|
|
2401
|
-
}
|
|
2402
|
-
//name: helmToFasta
|
|
2403
|
-
//input: string helmString {semType: Macromolecule}
|
|
2404
|
-
//output: string res
|
|
2405
|
-
function helmToFasta(helmString) {
|
|
2406
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
2407
|
-
const url = `http://localhost:8081/WebService/service/Fasta/Produce/${helmString}`;
|
|
2408
|
-
return yield accessServer(url, 'FastaFile');
|
|
2409
|
-
});
|
|
2410
|
-
}
|
|
2411
|
-
//name: helmToRNA
|
|
2412
|
-
//description: converts to rna analogue sequence
|
|
2413
|
-
//input: string helmString {semType: Macromolecule}
|
|
2414
|
-
//output: string res
|
|
2415
|
-
function helmToRNA(helmString) {
|
|
2416
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
2417
|
-
const url = `http://localhost:8081/WebService/service/Fasta/Convert/RNA/${helmString}`;
|
|
2418
|
-
return yield accessServer(url, 'Sequence');
|
|
2419
|
-
});
|
|
2420
|
-
}
|
|
2421
|
-
//name: helmToPeptide
|
|
2422
|
-
//description: converts to peptide analogue sequence
|
|
2423
|
-
//input: string helmString {semType: Macromolecule}
|
|
2424
|
-
//output: string res
|
|
2425
|
-
function helmToPeptide(helmString) {
|
|
2426
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
2427
|
-
const url = `http://localhost:8081/WebService/service/Fasta/Convert/PEPTIDE/${helmString}`;
|
|
2428
|
-
return yield accessServer(url, 'Sequence');
|
|
2429
|
-
});
|
|
2430
|
-
}
|
|
2431
|
-
//name: helmToSmiles
|
|
2432
|
-
//description: converts to smiles
|
|
2433
|
-
//input: string helmString {semType: Macromolecule}
|
|
2434
|
-
//output: string smiles {semType: Molecule}
|
|
2435
|
-
function helmToSmiles(helmString) {
|
|
2436
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
2437
|
-
const url = `http://localhost:8081/WebService/service/SMILES/${helmString}`;
|
|
2438
|
-
return yield accessServer(url, 'SMILES');
|
|
2439
|
-
});
|
|
2440
|
-
}
|
|
2441
2413
|
function getRS(smiles) {
|
|
2442
2414
|
const newS = smiles.match(/(?<=\[)[^\][]*(?=])/gm);
|
|
2443
2415
|
const res = {};
|
|
@@ -2490,4 +2462,4 @@ function helmWebEditor() {
|
|
|
2490
2462
|
helm = __webpack_exports__;
|
|
2491
2463
|
/******/ })()
|
|
2492
2464
|
;
|
|
2493
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNBLHNGQUFzRixXQUFXO0FBQ2pHO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1Qix5QkFBeUI7QUFDbEI7QUFDUDtBQUNBLHVFQUF1RSxXQUFXO0FBQ2xGO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msb0JBQW9CO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDTztBQUNQLGVBQWUsNERBQWtCO0FBQ2pDO0FBQ0EsY0FBYywwREFBZ0I7QUFDOUIsaUJBQWlCLGdEQUFNO0FBQ3ZCO0FBQ0EsNENBQTRDLGdCQUFnQjtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsZUFBZSwyREFBYTtBQUM1QiIsInNvdXJjZXMiOlsid2VicGFjazovL2hlbG0vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3JhbmRvbS5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9hbWlub2FjaWRzLmpzIiwid2VicGFjazovL2hlbG0vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL251Y2xlb3RpZGVzLmpzIiwid2VicGFjazovL2hlbG0vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3NlcS1wYWxldHRlcy5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91bmtub3duLmpzIiwid2VicGFjazovL2hlbG0vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3V0aWxzL2NlbGwtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vaGVsbS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdXRpbHMvbWFjcm9tb2xlY3VsZS5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91dGlscy9ub3RhdGlvbi1jb252ZXJ0ZXIuanMiLCJ3ZWJwYWNrOi8vaGVsbS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdXRpbHMvdW5pdHMtaGFuZGxlci5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3RvLWNvbnNvbGUuanMiLCJ3ZWJwYWNrOi8vaGVsbS8uL3NyYy9jZWxsLXJlbmRlcmVyLnRzIiwid2VicGFjazovL2hlbG0vLi9zcmMvY29uc3RhbnRzLnRzIiwid2VicGFjazovL2hlbG0vLi9zcmMvaGVsbS13ZWItZWRpdG9yLnRzIiwid2VicGFjazovL2hlbG0vLi9zcmMvdXRpbHMudHMiLCJ3ZWJwYWNrOi8vaGVsbS9leHRlcm5hbCB2YXIgXCJER1wiIiwid2VicGFjazovL2hlbG0vZXh0ZXJuYWwgdmFyIFwiZ3Jva1wiIiwid2VicGFjazovL2hlbG0vZXh0ZXJuYWwgdmFyIFwidWlcIiIsIndlYnBhY2s6Ly9oZWxtL2V4dGVybmFsIHZhciBcInd1XCIiLCJ3ZWJwYWNrOi8vaGVsbS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9oZWxtL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2hlbG0vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2hlbG0vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9oZWxtL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vaGVsbS8uL3NyYy9wYWNrYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gZmxvYXQgZnJvbSAwIHRvIHJhbmdlLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSByYW5nZSBNYXggZ2VuZXJhdGluZyB2YWx1ZS5cbiAqIEByZXR1cm4ge251bWJlcn0gQSByYW5kb20gZmxvYXQgZ2VuZXJhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tRmxvYXQocmFuZ2UpIHtcbiAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIHJhbmdlO1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgc2luZ2xlIHJhbmRvbSBpbnRlZ2VyIGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGludGVnZXIgZ2VuZXJhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tSW50KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IocmFuZG9tRmxvYXQocmFuZ2UpKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNtRnVaRzl0TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljbUZ1Wkc5dExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCT3pzN096czdSMEZOUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hYUVVGWExFTkJRVU1zUzBGQllUdEpRVU4yUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZETDBJc1EwRkJRenRCUVVWRU96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4VFFVRlRMRU5CUVVNc1MwRkJZVHRKUVVOeVF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZUVNc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUjJWdVpYSmhkR1Z6SUhOcGJtZHNaU0J5WVc1a2IyMGdabXh2WVhRZ1puSnZiU0F3SUhSdklISmhibWRsTGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCeVlXNW5aU0JOWVhnZ1oyVnVaWEpoZEdsdVp5QjJZV3gxWlM1Y2JpQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMGdRU0J5WVc1a2IyMGdabXh2WVhRZ1oyVnVaWEpoZEdWa0xseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21GdVpHOXRSbXh2WVhRb2NtRnVaMlU2SUc1MWJXSmxjaWs2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCTllYUm9MbkpoYm1SdmJTZ3BJQ29nY21GdVoyVTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnYVc1MFpXZGxjaUJtY205dElEQWdkRzhnY21GdVoyVXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJSEpoYm1kbElFMWhlQ0JuWlc1bGNtRjBhVzVuSUhaaGJIVmxMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlNCQklISmhibVJ2YlNCcGJuUmxaMlZ5SUdkbGJtVnlZWFJsWkM1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEpoYm1SdmJVbHVkQ2h5WVc1blpUb2diblZ0WW1WeUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJRTFoZEdndVpteHZiM0lvY21GdVpHOXRSbXh2WVhRb2NtRnVaMlVwS1R0Y2JuMWNiaUpkZlE9PSIsIi8qKlxuICogRGVub3RlcyBhIHZlY3RvciBvZiBmbG9hdGluZyBwb2l0IHZhbHVlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgVmVjdG9yXG4gKiBAZXh0ZW5kcyB7RmxvYXQzMkFycmF5fVxuICovXG5leHBvcnQgY2xhc3MgVmVjdG9yIGV4dGVuZHMgRmxvYXQzMkFycmF5IHtcbn1cbi8qKlxuICogRGVub3RlcyBhIHR3by1kaW1lbnNpb25hbCBtYXRyaXguXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIE1hdHJpeFxuICogQGV4dGVuZHMge0FycmF5PFZlY3Rvcj59XG4gKi9cbmV4cG9ydCBjbGFzcyBNYXRyaXggZXh0ZW5kcyBBcnJheSB7XG59XG4vKipcbiAqIERlbm90ZXMgY2FydGVzaWFuIGNvb3JkaW5hdGVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBDb29yZGluYXRlc1xuICogQGV4dGVuZHMge01hdHJpeH1cbiAqL1xuZXhwb3J0IGNsYXNzIENvb3JkaW5hdGVzIGV4dGVuZHMgTWF0cml4IHtcbn1cbi8qKlxuICogRGVub3RlcyBhbiBhcnJheSBvZiBhcmJpdHJhcnktdHlwZWQgdmVjdG9ycy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgVmVjdG9yc1xuICogQGV4dGVuZHMge0FycmF5PGFueT59XG4gKi9cbmV4cG9ydCBjbGFzcyBWZWN0b3JzIGV4dGVuZHMgQXJyYXkge1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pTMWtaV05zWVhKaGRHbHZibk11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjBlWEJsTFdSbFkyeGhjbUYwYVc5dWN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVRzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVFVGQlR5eFRRVUZSTEZsQlFWazdRMEZCUnp0QlFVVXpRenM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNUVUZCVHl4VFFVRlJMRXRCUVdFN1EwRkJSenRCUVVVMVF6czdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1YwRkJXU3hUUVVGUkxFMUJRVTA3UTBGQlJ6dEJRVVV4UXpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVDBGQlVTeFRRVUZSTEV0QlFWVTdRMEZCUnlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElIWmxZM1J2Y2lCdlppQm1iRzloZEdsdVp5QndiMmwwSUhaaGJIVmxjeTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQVkyeGhjM01nVm1WamRHOXlYRzRnS2lCQVpYaDBaVzVrY3lCN1JteHZZWFF6TWtGeWNtRjVmVnh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nVm1WamRHOXlJR1Y0ZEdWdVpITWdSbXh2WVhRek1rRnljbUY1SUh0OVhHNWNiaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmhJSFIzYnkxa2FXMWxibk5wYjI1aGJDQnRZWFJ5YVhndVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRR05zWVhOeklFMWhkSEpwZUZ4dUlDb2dRR1Y0ZEdWdVpITWdlMEZ5Y21GNVBGWmxZM1J2Y2o1OVhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5Qk5ZWFJ5YVhnZ1pYaDBaVzVrY3lCQmNuSmhlVHhXWldOMGIzSStJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCallYSjBaWE5wWVc0Z1kyOXZjbVJwYm1GMFpYTXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUdOc1lYTnpJRU52YjNKa2FXNWhkR1Z6WEc0Z0tpQkFaWGgwWlc1a2N5QjdUV0YwY21sNGZWeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdRMjl2Y21ScGJtRjBaWE1nWlhoMFpXNWtjeUJOWVhSeWFYZ2dlMzFjYmx4dUx5b3FYRzRnS2lCRVpXNXZkR1Z6SUdGdUlHRnljbUY1SUc5bUlHRnlZbWwwY21GeWVTMTBlWEJsWkNCMlpXTjBiM0p6TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQmpiR0Z6Y3lCV1pXTjBiM0p6WEc0Z0tpQkFaWGgwWlc1a2N5QjdRWEp5WVhrOFlXNTVQbjFjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUZabFkzUnZjbk1nWlhoMFpXNWtjeUJCY25KaGVUeGhibmsrSUh0OVhHNWNiaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmhJR1JwWTNScGIyNWhjbmtnWTI5dWRHRnBibWx1WnlCbWRXNWpkR2x2YmlCdmNIUnBiMjV6TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQjBlWEJsSUU5d2RHbHZibk5jYmlBcUwxeHVaWGh3YjNKMElIUjVjR1VnVDNCMGFXOXVjeUE5SUh0YmJtRnRaVG9nYzNSeWFXNW5YVG9nWVc1NWZUdGNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR04xYzNSdmJTQmthWE4wWVc1alpTQnRaWFJ5YVdNZ1ltVjBkMlZsYmlCMGFHVWdkSGR2SUdkcGRtVnVJSFpsWTNSdmNuTXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhSNWNHVWdSR2x6ZEdGdVkyVk5aWFJ5YVdOY2JpQXFJRUJ3WVhKaGJTQjdZVzU1ZlNCMk1TQlVhR1VnWm1seWMzUWdkbVZqZEc5eUxseHVJQ29nUUhCaGNtRnRJSHRoYm5sOUlIWXlJRlJvWlNCelpXTnZibVFnZG1WamRHOXlMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlNCRWFYTjBZVzVqWlNCaVpYUjNaV1Z1SUhSb1pYTmxJSFIzYnlCMlpXTjBiM0p6TGx4dUlDb3ZYRzVsZUhCdmNuUWdkSGx3WlNCRWFYTjBZVzVqWlUxbGRISnBZeUE5SUNoMk1Ub2dZVzU1TENCMk1qb2dZVzU1S1NBOVBpQW9iblZ0WW1WeUtUdGNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR0VnYzJsdGNHeGxJSE4wY21sdVp5QjBieUJ6ZEhKcGJtY2daR2xqZEdsdmJtRnllUzVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWRIbHdaU0JUZEhKcGJtZEVhV04wYVc5dVlYSjVYRzRnS2k5Y2JtVjRjRzl5ZENCMGVYQmxJRk4wY21sdVowUnBZM1JwYjI1aGNua2dQU0I3VzJ0bGVUb2djM1J5YVc1blhUb2djM1J5YVc1bmZUdGNiaUpkZlE9PSIsImltcG9ydCB7IFZlY3RvciB9IGZyb20gJy4vdHlwZS1kZWNsYXJhdGlvbnMnO1xuaW1wb3J0IHsgcmFuZG9tRmxvYXQsIHJhbmRvbUludCB9IGZyb20gJy4vcmFuZG9tJztcbi8qKlxuICogQXNzZXJ0cyBhIGNvbmRpdGlvbiBieSB0aHJvd2luZyBhbiBFcnJvci5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtjb25kaXRpb249ZmFsc2VdIENvbmRpdGlvbiB0byBhc3NlcnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2U9J0Fzc2VydGlvbiBlcnJvci4nXSBNZXNzYWdlIHRvIG91dHB1dC5cbiAqIEB0aHJvd3Mge0Vycm9yfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiA9IGZhbHNlLCBtZXNzYWdlID0gJ0Fzc2VydGlvbiBlcnJvci4nKSB7XG4gICAgaWYgKCFjb25kaXRpb24pXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBuZXcgdHdvLWRpbWVuc2lvbmFsIGFycmF5IGFuZCBmaWxscyBpdCB3aXRoIHRoZSB2YWx1ZSBnaXZlbi5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMSBUaGUgZmlyc3QgZGltZW5zaW9uIG9mIHRoZSBjb29yZGluYXRlcyAobnVtYmVyIG9mIHJvd3MpLlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjIgVGhlIHNlY29uZCBkaW1lbnNpb24gb2YgdGhlIGNvb3JkaW5hdGVzIChudW1iZXIgb2YgY29sdW1ucykuXG4gKiBAcGFyYW0ge251bWJlcn0gW2ZpbGw9MF0gQSB2YWx1ZSB0byBmaWxsIHRoZSBjb29yZGluYXRlcyB3aXRoLlxuICogQHJldHVybiB7Q29vcmRpbmF0ZXN9IEEgdHdvLWRpbWVuc2lvbmFsIGZpbGxlZCB3aXRoIHRoZSB2YWx1ZSBnaXZlbi5cbiAqIEB0b2RvIE1pZ2h0IGJlIHNsb3cgc2luY2UgdXNlZCBBcnJheS5tYXAuIFByb2JhYmx5IG5lZWRzIHBlcmZvcm1hbmNlIHJldmlzaW9uLlxuICovXG5mdW5jdGlvbiBpbml0Q29vcmRpbmF0ZXMoZGltZW5zaW9uMSwgZGltZW5zaW9uMiwgZmlsbCA9IDApIHtcbiAgICByZXR1cm4gbmV3IEFycmF5KGRpbWVuc2lvbjEpLmZpbGwoZmlsbCkubWFwKCgpID0+IChuZXcgVmVjdG9yKGRpbWVuc2lvbjIpLmZpbGwoZmlsbCkpKTtcbn1cbi8qKlxuICogVHJhbnNwb3NlIG1hdHJpeC5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge01hdHJpeH0gbWF0cml4IFRoZSBtYXRyaXggdG8gYmUgdHJhbnNwb3NlZC5cbiAqIEByZXR1cm4ge01hdHJpeH0gVHJhbnNwb3NlZCBtYXRyaXguXG4gKiBAdG9kbyBNaWdodCBiZSBzbG93IHNpbmNlIHVzZWQgQXJyYXkubWFwLiBQcm9iYWJseSBuZWVkcyBwZXJmb3JtYW5jZSByZXZpc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zcG9zZU1hdHJpeChtYXRyaXgpIHtcbiAgICByZXR1cm4gbmV3IEFycmF5KG1hdHJpeFswXS5sZW5ndGgpLmZpbGwoMClcbiAgICAgICAgLm1hcCgoXywgaSkgPT4gKG5ldyBWZWN0b3IobWF0cml4Lmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGopID0+IChtYXRyaXhbal1baV0pKSkpO1xufVxuLyoqXG4gKiBBZGRzIHR3byB2ZWN0b3JzIHdpdGggdGhlIHNlY29uZCBvbmUgdG8gYmUgbXVsdGlwbGllZCBieSB0aGUgZ2l2ZW4gcmF0aW8uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3J9IHAgVGhlIGZpcnN0IHZlY3RvciB0byBhZGQuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3RvciB0byBhZGQuXG4gKiBAcGFyYW0ge251bWJlcn0gW211bHRpcGxpZXI9MV0gQSBtdWx0aXBsaWVyIHRvIGJlIHVzZWQgYmVmb3JlIHRoZSBzZWNvbmQgdmVjdG9yIGlzIGFkZGVkLlxuICogQHJldHVybiB7VmVjdG9yfSBOZXcgdmVjdG9yIGNvbnRhaW5lZCB0aGUgcmVzdWx0IG9mIG9wZXJhdGlvbiBwK211bHRpcGxpZXIqcS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlY3RvckFkZChwLCBxLCBtdWx0aXBsaWVyID0gMSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IHAubGVuZ3RoO1xuICAgIGFzc2VydChuSXRlbXMgPT0gcS5sZW5ndGgsICdWZWN0b3IgbGVuZ3RocyBkbyBub3QgbWF0Y2guJyk7XG4gICAgY29uc3QgdG90YWwgPSBuZXcgVmVjdG9yKG5JdGVtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwLmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbFtpXSA9IHBbaV0gKyBtdWx0aXBsaWVyICogcVtpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG4vKipcbiAqIFN1bXMgdGhlIHZlY3RvcidzIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7VmVjdG9yfSB2IFRoZSB2ZWN0b3IgdG8gYmUgc3VtbWVkLlxuICogQHJldHVybiB7bnVtYmVyfSBUaGUgdmVjdG9yJ3MgaXRlbXMgc3VtLlxuICovXG5mdW5jdGlvbiBpdGVtc1N1bSh2KSB7XG4gICAgbGV0IHRvdGFsID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsICs9IHZbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuLyoqXG4gKiBTdXFhcmVzIHRoZSB2ZWN0b3IncyBpdGVtcy5cbiAqXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gdiBUaGUgdmVjdG9yIHRvIHNxdWFyZS5cbiAqIEByZXR1cm4ge1ZlY3Rvcn0gQSBuZXcgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsJ3MgaXRlbXMgc3F1YXJlZC5cbiAqL1xuZnVuY3Rpb24gdmVjdG9yU3F1YXJlKHYpIHtcbiAgICBjb25zdCBuSXRlbXMgPSB2Lmxlbmd0aDtcbiAgICBjb25zdCB0b3RhbCA9IG5ldyBWZWN0b3Iobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsW2ldID0gdltpXSAqIHZbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHZlY3Rvckxlbmd0aCh2KSB7XG4gICAgbGV0IHNxclN1bSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKVxuICAgICAgICBzcXJTdW0gKz0gdltpXSAqIHZbaV07XG4gICAgcmV0dXJuIE1hdGguc3FydChzcXJTdW0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHZlY3RvckRvdFByb2R1Y3QodjEsIHYyKSB7XG4gICAgaWYgKHYxLmxlbmd0aCAhPSB2Mi5sZW5ndGgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRpbWVuc2lvbmFsaXR5IG9mIHRoZSB2ZWN0b3JzIG11c3QgbWF0Y2gnKTtcbiAgICBsZXQgcHJvZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2MS5sZW5ndGg7IGkrKylcbiAgICAgICAgcHJvZCArPSB2MVtpXSAqIHYyW2ldO1xuICAgIHJldHVybiBwcm9kO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCB2YWx1ZXMuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjEgVGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4LlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjIgVGhlIHNlY29uZCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc2NhbGU9MS5dIE1heCB2YWx1ZSBnaXZlbiBieSByYW5kb20gZ2VuZXJhdG9yLlxuICogQHJldHVybiB7TWF0cml4fSBBIG5ldyBtYXRyaXggZmlsbGVkIHdpdGggcmFuZG9tIGZsb2F0aW5nIHBvaW50ICB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWxsUmFuZG9tTWF0cml4KGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIsIHNjYWxlID0gMS4pIHtcbiAgICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMoZGltZW5zaW9uMSwgZGltZW5zaW9uMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW1lbnNpb24xOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkaW1lbnNpb24yOyArK2opXG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSByYW5kb21GbG9hdChzY2FsZSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlY3RvcnMuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3J9IHAgVGhlIGZpcnN0IHZlY3Rvci5cbiAqIEBwYXJhbSB7VmVjdG9yfSBxIFRoZSBzZWNvbmQgdmVjdG9yLlxuICogQHJldHVybiB7bnVtYmVyfSBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gdmVjdG9ycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHAsIHEpIHtcbiAgICBjb25zdCBkaWZmID0gdmVjdG9yQWRkKHAsIHEsIC0xKTtcbiAgICBjb25zdCBzcWRpZmYgPSB2ZWN0b3JTcXVhcmUoZGlmZik7XG4gICAgY29uc3Qgc3FkaWZmU3VtbSA9IGl0ZW1zU3VtKHNxZGlmZik7XG4gICAgcmV0dXJuIE1hdGguc3FydChzcWRpZmZTdW1tKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIGRpc3RhbmNlIG1hdHJpeCB1c2luZyBhIGN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3RvcnN9IGRhdGEgSW5wdXQgdmVjdG9ycyB0byBjYWxjdWxhdGUgZGlzdGFuY2VzLlxuICogQHBhcmFtIHtEaXN0YW5jZU1ldHJpY30gZGlzdGFuY2UgQ3VzdG9tIGRpc3RhbmNlIGZ1bmN0aW9uLlxuICogQHJldHVybiB7TWF0cml4fSBDYWxjdWxhdGVkIGN1c3RvbSBkaXN0YW5jZSBtYXRyaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjRGlzdGFuY2VNYXRyaXgoZGF0YSwgZGlzdGFuY2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBkYXRhLmxlbmd0aDtcbiAgICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMobkl0ZW1zLCBuSXRlbXMsIDApO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgbkl0ZW1zOyArK2opIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSAoZGF0YVtpXSA9PSBudWxsKSB8fCAoZGF0YVtqXSA9PSBudWxsKSA/IDAgOiBkaXN0YW5jZShkYXRhW2ldLCBkYXRhW2pdKTtcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtqXVtpXSA9IGQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbn1cbi8qKiBHZW5lcmF0ZXMgYXJyYXkgZnJvbSBhIHJhbmdlIFtiZWdpbjsgZW5kXSBvciBbYmVnaW47IGVuZCkgaWYgZW5kRXhjbHVzaXZlLiAqKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5SYW5nZShiZWdpbiwgZW5kLCBlbmRFeGNsdXNpdmUgPSBmYWxzZSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IGVuZCAtIGJlZ2luICsgKGVuZEV4Y2x1c2l2ZSA/IDAgOiAxKTtcbiAgICBjb25zdCBzZXJpZXMgPSBuZXcgSW50MzJBcnJheShuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpXG4gICAgICAgIHNlcmllc1tpXSA9IGJlZ2luICsgaTtcbiAgICByZXR1cm4gc2VyaWVzO1xufVxuLyoqXG4gKiBSZXR1cm5zIG9yZGVyIG9mIHZhbHVlcyBhcyBpZiB0aGV5IGFyZSBzb3J0ZWQuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHthbnlbXX0gdmFsdWVzIElucHV0IGFycmF5LlxuICogQHBhcmFtIHtib29sZWFufSBbcmV2ZXJzZT1mYWxzZV0gV2hldGhlciB0byByZXR1cm4gcmV2ZXJzZWQgb3JkZXIuXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gVGhlIG9yZGVyIGNvbXB1dGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJnU29ydCh2YWx1ZXMsIHJldmVyc2UgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNvcnRmbiA9IHJldmVyc2UgPyAoYSwgYikgPT4gKGJbMF0gLSBhWzBdKSA6IChhLCBiKSA9PiAoYVswXSAtIGJbMF0pO1xuICAgIGNvbnN0IGRlY29yID0gKHYsIGkpID0+IFt2LCBpXTsgLy8gc2V0IGluZGV4IHRvIHZhbHVlXG4gICAgY29uc3QgdW5kZWNvciA9IChhKSA9PiBhWzFdOyAvLyBsZWF2ZSBvbmx5IGluZGV4XG4gICAgY29uc3QgX2FyZ3NvcnQgPSAoYXJyKSA9PiBhcnIubWFwKGRlY29yKS5zb3J0KHNvcnRmbikubWFwKHVuZGVjb3IpO1xuICAgIHJldHVybiBfYXJnc29ydCh2YWx1ZXMpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0cyBhY2NvcmRpbmcgdG8gdGhlIGRpc3QgZnVuY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggdG90YWwgbnVtYmVyIG9mIG9iamVjdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIG51bWJlciBvZiBkaXZlcnNlIGVsZW1lbnRzIHRvIGZpbmRcbiAqIEBwYXJhbSB7KGkxOiBudW1iZXIsIGkyOiBudW1iZXIpID0+IG51bWJlcn0gZGlzdCBhIGZ1bmN0aW9uIHdoaWNoIGNhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3byBvYmplY3RzIHVzaW5nIHRoZWlyIGluZGV4ZXNcbiAqIEByZXR1cm5zIHtudW1iZXJbXX0gVGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXZlcnNlU3Vic2V0KGxlbmd0aCwgbiwgZGlzdCkge1xuICAgIGZ1bmN0aW9uIG1heEJ5KHZhbHVlcywgb3JkZXJCeSkge1xuICAgICAgICBsZXQgbWF4VmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWF4T3JkZXJCeSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPcmRlckJ5ID0gb3JkZXJCeShlbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChtYXhPcmRlckJ5ID09IG51bGwgfHwgZWxlbWVudE9yZGVyQnkgPiBtYXhPcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIG1heE9yZGVyQnkgPSBlbGVtZW50T3JkZXJCeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICAgIGNvbnN0IGNvbXBsZW1lbnQgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICAgIH1cbiAgICB3aGlsZSAoc3Vic2V0Lmxlbmd0aCA8IG4pIHtcbiAgICAgICAgY29uc3QgaWR4ID0gbWF4QnkoY29tcGxlbWVudC52YWx1ZXMoKSwgKGkpID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIHN1YnNldC5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0KGksIHZhbCk7XG4gICAgICAgIH0pKSk7XG4gICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgIHN1YnNldC5wdXNoKGlkeCk7XG4gICAgICAgICAgICBjb21wbGVtZW50LmRlbGV0ZShpZHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWJzZXQ7XG59XG4vKipcbiAqIFJldHVybnMgbm9ybWFsaXplZCB2ZWN0b3JcbiAqIEBwYXJhbSB7VmVjdG9yfSBkYXRhIG51bWVyaWNhbCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGRhdGEpIHtcbiAgICBsZXQgbWVhbiA9IDA7XG4gICAgbGV0IHN0ZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBtZWFuICs9IGRhdGFbaV07XG4gICAgbWVhbiAvPSBkYXRhLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIHN0ZCArPSAoZGF0YVtpXSAtIG1lYW4pICogKGRhdGFbaV0gLSBtZWFuKTtcbiAgICBzdGQgPSBNYXRoLnNxcnQoc3RkIC8gZGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgZGF0YVtpXSA9IChkYXRhW2ldIC0gbWVhbikgLyBzdGQ7XG4gICAgcmV0dXJuIGRhdGE7XG59XG4vKipcbiAqIEZpbmRzIHNldCBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGxpc3RzLlxuICogQHBhcmFtIHthbnlbXX0gYSBUaGUgZmlyc3QgbGlzdC5cbiAqIEBwYXJhbSB7YW55W119IGIgVGhlIHNlY29uZCBsaXN0LlxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREaWZmZXJlbmNlKGEsIGIpIHtcbiAgICBjb25zdCBiU2V0ID0gbmV3IFNldChiKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGEuZmlsdGVyKCh4KSA9PiAhYlNldC5oYXMoeCkpKS52YWx1ZXMoKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVk1zVFVGQlRTeEZRVUYxUXl4TlFVRk5MSEZDUVVGeFFpeERRVUZETzBGQlEzcEdMRTlCUVU4c1JVRkJReXhYUVVGWExFVkJRVVVzVTBGQlV5eEZRVUZETEUxQlFVMHNWVUZCVlN4RFFVRkRPMEZCUldoRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1RVRkJUU3hEUVVGRExGbEJRWEZDTEV0QlFVc3NSVUZCUlN4VlFVRnJRaXhyUWtGQmEwSTdTVUZEY2tZc1NVRkJTU3hEUVVGRExGTkJRVk03VVVGRFdpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRemRDTEVOQlFVTTdRVUZGUkRzN096czdPenM3UjBGUlJ6dEJRVU5JTEZOQlFWTXNaVUZCWlN4RFFVRkRMRlZCUVd0Q0xFVkJRVVVzVlVGQmEwSXNSVUZCUlN4UFFVRmxMRU5CUVVNN1NVRkRMMFVzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hsUVVGbExFTkJRVU1zVFVGQll6dEpRVU0xUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzWkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNSR0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hoUVVGeFFpeERRVUZETzBsQlEzQkZMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGZUVJc1RVRkJUU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRGhDUVVFNFFpeERRVUZETEVOQlFVTTdTVUZGTTBRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWMFF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTm1MRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxGTkJRVk1zVVVGQlVTeERRVUZETEVOQlFWTTdTVUZEZWtJc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmFFSXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeFRRVUZUTEZsQlFWa3NRMEZCUXl4RFFVRlRPMGxCUXpkQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRlRUlzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSWHBDTEU5QlFVOHNTMEZCU3l4RFFVRkRPMEZCUTJZc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeFpRVUZaTEVOQlFVTXNRMEZCVXp0SlFVTndReXhKUVVGSkxFMUJRVTBzUjBGQlZ5eERRVUZETEVOQlFVTTdTVUZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEzWkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU16UWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGVk8wbEJRM0pFTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRUdFJRVU40UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExEaERRVUU0UXl4RFFVRkRMRU5CUVVNN1NVRkRiRVVzU1VGQlNTeEpRVUZKTEVkQlFWY3NRMEZCUXl4RFFVRkRPMGxCUTNKQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFWY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTjRReXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UWl4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOa0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhWUVVGclFpeEZRVUZGTEZWQlFXdENMRVZCUVVVc1VVRkJaMElzUlVGQlJUdEpRVU42Uml4TlFVRk5MRTFCUVUwc1IwRkJSeXhsUVVGbExFTkJRVU1zVlVGQlZTeEZRVUZGTEZWQlFWVXNRMEZCUXl4RFFVRkRPMGxCUlhaRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZEYmtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1JVRkJSU3hGUVVGRkxFTkJRVU03V1VGRGFrTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOeVF6dEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxEQkNRVUV3UWl4RFFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGVE8wbEJRemRFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRha01zVFVGQlRTeE5RVUZOTEVkQlFVY3NXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRMnhETEUxQlFVMHNWVUZCVlN4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU53UXl4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdRVUZETDBJc1EwRkJRenRCUVVWRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc2EwSkJRV3RDTEVOQlFVTXNTVUZCWVN4RlFVRkZMRkZCUVhkQ08wbEJRM2hGTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRE0wSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1pVRkJaU3hEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZiRVFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTXZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnVReXhOUVVGTkxFTkJRVU1zUjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6RkdMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTJwRE8wdEJRMFk3U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVFzYTBaQlFXdEdPMEZCUTJ4R0xFMUJRVTBzVlVGQlZTeFJRVUZSTEVOQlFVTXNTMEZCWVN4RlFVRkZMRWRCUVZjc1JVRkJSU3haUVVGWkxFZEJRVWNzUzBGQlN6dEpRVU4yUlN4TlFVRk5MRTFCUVUwc1IwRkJSeXhIUVVGSExFZEJRVWNzUzBGQlN5eEhRVUZITEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNCRUxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJSWFJETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXpkQ0xFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJSWGhDTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxFOUJRVThzUTBGQlF5eE5RVUZoTEVWQlFVVXNUMEZCVHl4SFFVRkhMRXRCUVVzN1NVRkRjRVFzVFVGQlRTeE5RVUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVkVzUlVGQlJTeERRVUZSTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFWRXNSVUZCUlN4RFFVRlJMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzWkhMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlRTeEZRVUZGTEVOQlFWTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4eFFrRkJjVUk3U1VGRGJFVXNUVUZCVFN4UFFVRlBMRWRCUVVjc1EwRkJReXhEUVVGUkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExHMUNRVUZ0UWp0SlFVTjJSQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eERRVUZETEVkQlFWVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUXpGRkxFOUJRVThzVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUXpGQ0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRTFCUVdNc1JVRkJSU3hEUVVGVExFVkJRVVVzU1VGQmQwTTdTVUZEYkVjc1UwRkJVeXhMUVVGTExFTkJRVU1zVFVGQlowTXNSVUZCUlN4UFFVRTRRanRSUVVNM1JTeEpRVUZKTEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRjRUlzU1VGQlNTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUlhSQ0xFdEJRVXNzVFVGQlRTeFBRVUZQTEVsQlFVa3NUVUZCVFN4RlFVRkZPMWxCUXpWQ0xFMUJRVTBzWTBGQll5eEhRVUZITEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRaUVVONFF5eEpRVUZKTEZWQlFWVXNTVUZCU1N4SlFVRkpMRWxCUVVrc1kwRkJZeXhIUVVGSExGVkJRVlVzUlVGQlJUdG5Ra0ZEY2tRc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF6dG5Ra0ZEYmtJc1ZVRkJWU3hIUVVGSExHTkJRV01zUTBGQlF6dGhRVU0zUWp0VFFVTkdPMUZCUTBRc1QwRkJUeXhSUVVGUkxFTkJRVU03U1VGRGJFSXNRMEZCUXp0SlFVVkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM1pETEUxQlFVMHNWVUZCVlN4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRk4wSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRSUVVNdlFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrSXNWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU55UWp0SlFVVkVMRTlCUVU4c1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdVVUZEZUVJc1RVRkJUU3hIUVVGSExFZEJRVWNzUzBGQlN5eERRVU5tTEZWQlFWVXNRMEZCUXl4TlFVRk5MRVZCUVRoQ0xFVkJReTlETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZUTEVkQlFVY3NSVUZCUlN4TFFVRkxPMWxCUTNoRUxFOUJRVThzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOMFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRVQ3hKUVVGSkxFZEJRVWNzUlVGQlJUdFpRVU5RTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGFrSXNWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFRRVU40UWp0TFFVTkdPMGxCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXp0QlFVVkVPenM3UjBGSFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4VFFVRlRMRU5CUVVNc1NVRkJXVHRKUVVOd1F5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRZaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZGV2l4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRGJFTXNTVUZCU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVZzUWl4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVVZ3UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRGJFTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUlRkRExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZGYmtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlEyeERMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdTVUZGYmtNc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFpDeERRVUZETzBGQlJVUTdPenM3TzBkQlMwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1lVRkJZU3hEUVVGRExFTkJRVkVzUlVGQlJTeERRVUZSTzBsQlF6bERMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNoQ0xFOUJRVThzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEY2tVc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3VFdGMGNtbDRMQ0JXWldOMGIzSXNJRU52YjNKa2FXNWhkR1Z6TENCV1pXTjBiM0p6TENCRWFYTjBZVzVqWlUxbGRISnBZMzBnWm5KdmJTQW5MaTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTNKaGJtUnZiVVpzYjJGMExDQnlZVzVrYjIxSmJuUjlJR1p5YjIwZ0p5NHZjbUZ1Wkc5dEp6dGNibHh1THlvcVhHNGdLaUJCYzNObGNuUnpJR0VnWTI5dVpHbDBhVzl1SUdKNUlIUm9jbTkzYVc1bklHRnVJRVZ5Y205eUxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXMk52Ym1ScGRHbHZiajFtWVd4elpWMGdRMjl1WkdsMGFXOXVJSFJ2SUdGemMyVnlkQzVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmJXVnpjMkZuWlQwblFYTnpaWEowYVc5dUlHVnljbTl5TGlkZElFMWxjM05oWjJVZ2RHOGdiM1YwY0hWMExseHVJQ29nUUhSb2NtOTNjeUI3UlhKeWIzSjlYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCaGMzTmxjblFvWTI5dVpHbDBhVzl1T2lCaWIyOXNaV0Z1SUQwZ1ptRnNjMlVzSUcxbGMzTmhaMlU2SUhOMGNtbHVaeUE5SUNkQmMzTmxjblJwYjI0Z1pYSnliM0l1SnlrZ2UxeHVJQ0JwWmlBb0lXTnZibVJwZEdsdmJpbGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvYldWemMyRm5aU2s3WEc1OVhHNWNiaThxS2x4dUlDb2dRM0psWVhSbGN5QnVaWGNnZEhkdkxXUnBiV1Z1YzJsdmJtRnNJR0Z5Y21GNUlHRnVaQ0JtYVd4c2N5QnBkQ0IzYVhSb0lIUm9aU0IyWVd4MVpTQm5hWFpsYmk1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnWkdsdFpXNXphVzl1TVNCVWFHVWdabWx5YzNRZ1pHbHRaVzV6YVc5dUlHOW1JSFJvWlNCamIyOXlaR2x1WVhSbGN5QW9iblZ0WW1WeUlHOW1JSEp2ZDNNcExseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR1JwYldWdWMybHZiaklnVkdobElITmxZMjl1WkNCa2FXMWxibk5wYjI0Z2IyWWdkR2hsSUdOdmIzSmthVzVoZEdWeklDaHVkVzFpWlhJZ2IyWWdZMjlzZFcxdWN5a3VYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnVzJacGJHdzlNRjBnUVNCMllXeDFaU0IwYnlCbWFXeHNJSFJvWlNCamIyOXlaR2x1WVhSbGN5QjNhWFJvTGx4dUlDb2dRSEpsZEhWeWJpQjdRMjl2Y21ScGJtRjBaWE45SUVFZ2RIZHZMV1JwYldWdWMybHZibUZzSUdacGJHeGxaQ0IzYVhSb0lIUm9aU0IyWVd4MVpTQm5hWFpsYmk1Y2JpQXFJRUIwYjJSdklFMXBaMmgwSUdKbElITnNiM2NnYzJsdVkyVWdkWE5sWkNCQmNuSmhlUzV0WVhBdUlGQnliMkpoWW14NUlHNWxaV1J6SUhCbGNtWnZjbTFoYm1ObElISmxkbWx6YVc5dUxseHVJQ292WEc1bWRXNWpkR2x2YmlCcGJtbDBRMjl2Y21ScGJtRjBaWE1vWkdsdFpXNXphVzl1TVRvZ2JuVnRZbVZ5TENCa2FXMWxibk5wYjI0eU9pQnVkVzFpWlhJc0lHWnBiR3c2SUc1MWJXSmxjaUE5SURBcE9pQkRiMjl5WkdsdVlYUmxjeUI3WEc0Z0lISmxkSFZ5YmlCdVpYY2dRWEp5WVhrb1pHbHRaVzV6YVc5dU1Ta3VabWxzYkNobWFXeHNLUzV0WVhBb0tDa2dQVDRnS0c1bGR5QldaV04wYjNJb1pHbHRaVzV6YVc5dU1pa3VabWxzYkNobWFXeHNLU2twTzF4dWZWeHVYRzR2S2lwY2JpQXFJRlJ5WVc1emNHOXpaU0J0WVhSeWFYZ3VYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHROWVhSeWFYaDlJRzFoZEhKcGVDQlVhR1VnYldGMGNtbDRJSFJ2SUdKbElIUnlZVzV6Y0c5elpXUXVYRzRnS2lCQWNtVjBkWEp1SUh0TllYUnlhWGg5SUZSeVlXNXpjRzl6WldRZ2JXRjBjbWw0TGx4dUlDb2dRSFJ2Wkc4Z1RXbG5hSFFnWW1VZ2MyeHZkeUJ6YVc1alpTQjFjMlZrSUVGeWNtRjVMbTFoY0M0Z1VISnZZbUZpYkhrZ2JtVmxaSE1nY0dWeVptOXliV0Z1WTJVZ2NtVjJhWE5wYjI0dVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIwY21GdWMzQnZjMlZOWVhSeWFYZ29iV0YwY21sNE9pQk5ZWFJ5YVhncE9pQk5ZWFJ5YVhnZ2UxeHVJQ0J5WlhSMWNtNGdibVYzSUVGeWNtRjVLRzFoZEhKcGVGc3dYUzVzWlc1bmRHZ3BMbVpwYkd3b01DbGNiaUFnSUNBdWJXRndLQ2hmTENCcEtTQTlQaUFvYm1WM0lGWmxZM1J2Y2lodFlYUnlhWGd1YkdWdVozUm9LUzVtYVd4c0tEQXBMbTFoY0Nnb1h5d2dhaWtnUFQ0Z0tHMWhkSEpwZUZ0cVhWdHBYU2twS1NrN1hHNTlYRzVjYmk4cUtseHVJQ29nUVdSa2N5QjBkMjhnZG1WamRHOXljeUIzYVhSb0lIUm9aU0J6WldOdmJtUWdiMjVsSUhSdklHSmxJRzExYkhScGNHeHBaV1FnWW5rZ2RHaGxJR2RwZG1WdUlISmhkR2x2TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCd0lGUm9aU0JtYVhKemRDQjJaV04wYjNJZ2RHOGdZV1JrTGx4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKOUlIRWdWR2hsSUhObFkyOXVaQ0IyWldOMGIzSWdkRzhnWVdSa0xseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRnR0ZFd4MGFYQnNhV1Z5UFRGZElFRWdiWFZzZEdsd2JHbGxjaUIwYnlCaVpTQjFjMlZrSUdKbFptOXlaU0IwYUdVZ2MyVmpiMjVrSUhabFkzUnZjaUJwY3lCaFpHUmxaQzVjYmlBcUlFQnlaWFIxY200Z2UxWmxZM1J2Y24wZ1RtVjNJSFpsWTNSdmNpQmpiMjUwWVdsdVpXUWdkR2hsSUhKbGMzVnNkQ0J2WmlCdmNHVnlZWFJwYjI0Z2NDdHRkV3gwYVhCc2FXVnlLbkV1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjJaV04wYjNKQlpHUW9jRG9nVm1WamRHOXlMQ0J4T2lCV1pXTjBiM0lzSUcxMWJIUnBjR3hwWlhJNklHNTFiV0psY2lBOUlERXBPaUJXWldOMGIzSWdlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0J3TG14bGJtZDBhRHRjYmx4dUlDQmhjM05sY25Rb2JrbDBaVzF6SUQwOUlIRXViR1Z1WjNSb0xDQW5WbVZqZEc5eUlHeGxibWQwYUhNZ1pHOGdibTkwSUcxaGRHTm9MaWNwTzF4dVhHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2JtVjNJRlpsWTNSdmNpaHVTWFJsYlhNcE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2NDNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQjBiM1JoYkZ0cFhTQTlJSEJiYVYwZ0t5QnRkV3gwYVhCc2FXVnlJQ29nY1Z0cFhUdGNibHh1SUNCeVpYUjFjbTRnZEc5MFlXdzdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1UzVnRjeUIwYUdVZ2RtVmpkRzl5SjNNZ2FYUmxiWE11WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRXWldOMGIzSjlJSFlnVkdobElIWmxZM1J2Y2lCMGJ5QmlaU0J6ZFcxdFpXUXVYRzRnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SUZSb1pTQjJaV04wYjNJbmN5QnBkR1Z0Y3lCemRXMHVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHbDBaVzF6VTNWdEtIWTZJRlpsWTNSdmNpazZJRzUxYldKbGNpQjdYRzRnSUd4bGRDQjBiM1JoYkNBOUlEQTdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjJMbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJSFJ2ZEdGc0lDczlJSFpiYVYwN1hHNWNiaUFnY21WMGRYSnVJSFJ2ZEdGc08xeHVmVnh1WEc0dktpcGNiaUFxSUZOMWNXRnlaWE1nZEdobElIWmxZM1J2Y2lkeklHbDBaVzF6TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0IySUZSb1pTQjJaV04wYjNJZ2RHOGdjM0YxWVhKbExseHVJQ29nUUhKbGRIVnliaUI3Vm1WamRHOXlmU0JCSUc1bGR5QjJaV04wYjNJZ1kyOXVkR0ZwYm1sdVp5QjBhR1VnYjNKcFoybHVZV3duY3lCcGRHVnRjeUJ6Y1hWaGNtVmtMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQjJaV04wYjNKVGNYVmhjbVVvZGpvZ1ZtVmpkRzl5S1RvZ1ZtVmpkRzl5SUh0Y2JpQWdZMjl1YzNRZ2JrbDBaVzF6SUQwZ2RpNXNaVzVuZEdnN1hHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2JtVjNJRlpsWTNSdmNpaHVTWFJsYlhNcE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RpNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQjBiM1JoYkZ0cFhTQTlJSFpiYVYwZ0tpQjJXMmxkTzF4dVhHNGdJSEpsZEhWeWJpQjBiM1JoYkR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSFpsWTNSdmNreGxibWQwYUNoMk9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JzWlhRZ2MzRnlVM1Z0T2lCdWRXMWlaWElnUFNBd08xeHVJQ0JtYjNJZ0tHeGxkQ0JwT2lCdWRXMWlaWElnUFNBd095QnBJRHdnZGk1c1pXNW5kR2c3SUdrckt5bGNiaUFnSUNCemNYSlRkVzBnS3owZ2RsdHBYU0FxSUhaYmFWMDdYRzRnSUhKbGRIVnliaUJOWVhSb0xuTnhjblFvYzNGeVUzVnRLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIWmxZM1J2Y2tSdmRGQnliMlIxWTNRb2RqRTZJRlpsWTNSdmNpd2dkakk2SUZabFkzUnZjaWs2SUc1MWJXSmxjaUI3WEc0Z0lHbG1JQ2gyTVM1c1pXNW5kR2dnSVQwZ2RqSXViR1Z1WjNSb0tWeHVJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVkdobElHUnBiV1Z1YzJsdmJtRnNhWFI1SUc5bUlIUm9aU0IyWldOMGIzSnpJRzExYzNRZ2JXRjBZMmduS1R0Y2JpQWdiR1YwSUhCeWIyUTZJRzUxYldKbGNpQTlJREE3WEc0Z0lHWnZjaUFvYkdWMElHazZJRzUxYldKbGNpQTlJREE3SUdrZ1BDQjJNUzVzWlc1bmRHZzdJR2tyS3lsY2JpQWdJQ0J3Y205a0lDczlJSFl4VzJsZElDb2dkakpiYVYwN1hHNGdJSEpsZEhWeWJpQndjbTlrTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZU0J0WVhSeWFYZ2dabWxzYkdWa0lIZHBkR2dnY21GdVpHOXRJR1pzYjJGMGFXNW5JSEJ2YVc1MElIWmhiSFZsY3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1pHbHRaVzV6YVc5dU1TQlVhR1VnWm1seWMzUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQnRZWFJ5YVhndVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdaR2x0Wlc1emFXOXVNaUJVYUdVZ2MyVmpiMjVrSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnYldGMGNtbDRMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0elkyRnNaVDB4TGwwZ1RXRjRJSFpoYkhWbElHZHBkbVZ1SUdKNUlISmhibVJ2YlNCblpXNWxjbUYwYjNJdVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRUVnYm1WM0lHMWhkSEpwZUNCbWFXeHNaV1FnZDJsMGFDQnlZVzVrYjIwZ1pteHZZWFJwYm1jZ2NHOXBiblFnSUhaaGJIVmxjeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHWnBiR3hTWVc1a2IyMU5ZWFJ5YVhnb1pHbHRaVzV6YVc5dU1Ub2diblZ0WW1WeUxDQmthVzFsYm5OcGIyNHlPaUJ1ZFcxaVpYSXNJSE5qWVd4bE9pQnVkVzFpWlhJZ1BTQXhMaWs2SUUxaGRISnBlQ0I3WEc0Z0lHTnZibk4wSUcxaGRISnBlQ0E5SUdsdWFYUkRiMjl5WkdsdVlYUmxjeWhrYVcxbGJuTnBiMjR4TENCa2FXMWxibk5wYjI0eUtUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUnBiV1Z1YzJsdmJqRTdJQ3NyYVNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z1pHbHRaVzV6YVc5dU1qc2dLeXRxS1Z4dUlDQWdJQ0FnYldGMGNtbDRXMmxkVzJwZElEMGdjbUZ1Wkc5dFJteHZZWFFvYzJOaGJHVXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnRZWFJ5YVhnN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJGc1kzVnNZWFJsY3lCRmRXTnNhV1JsWVc0Z1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGQyOGdkbVZqZEc5eWN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdjQ0JVYUdVZ1ptbHljM1FnZG1WamRHOXlMbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUhFZ1ZHaGxJSE5sWTI5dVpDQjJaV04wYjNJdVhHNGdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSjlJRVYxWTJ4cFpHVmhiaUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlNCbmFYWmxiaUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1kyRnNZM1ZzWVhSbFJYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2NEb2dWbVZqZEc5eUxDQnhPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0JrYVdabUlEMGdkbVZqZEc5eVFXUmtLSEFzSUhFc0lDMHhLVHRjYmlBZ1kyOXVjM1FnYzNGa2FXWm1JRDBnZG1WamRHOXlVM0YxWVhKbEtHUnBabVlwTzF4dUlDQmpiMjV6ZENCemNXUnBabVpUZFcxdElEMGdhWFJsYlhOVGRXMG9jM0ZrYVdabUtUdGNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2h6Y1dScFptWlRkVzF0S1R0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0VnWkdsemRHRnVZMlVnYldGMGNtbDRJSFZ6YVc1bklHRWdZM1Z6ZEc5dElHUnBjM1JoYm1ObElHWjFibU4wYVc5dUxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWMzMGdaR0YwWVNCSmJuQjFkQ0IyWldOMGIzSnpJSFJ2SUdOaGJHTjFiR0YwWlNCa2FYTjBZVzVqWlhNdVhHNGdLaUJBY0dGeVlXMGdlMFJwYzNSaGJtTmxUV1YwY21samZTQmthWE4wWVc1alpTQkRkWE4wYjIwZ1pHbHpkR0Z1WTJVZ1puVnVZM1JwYjI0dVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRU5oYkdOMWJHRjBaV1FnWTNWemRHOXRJR1JwYzNSaGJtTmxJRzFoZEhKcGVDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOaGJHTkVhWE4wWVc1alpVMWhkSEpwZUNoa1lYUmhPaUJXWldOMGIzSnpMQ0JrYVhOMFlXNWpaVG9nUkdsemRHRnVZMlZOWlhSeWFXTXBPaUJOWVhSeWFYZ2dlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0JrWVhSaExteGxibWQwYUR0Y2JpQWdZMjl1YzNRZ2JXRjBjbWw0SUQwZ2FXNXBkRU52YjNKa2FXNWhkR1Z6S0c1SmRHVnRjeXdnYmtsMFpXMXpMQ0F3S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUc1SmRHVnRjenNnS3l0cEtTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FpQTlJR2tnS3lBeE95QnFJRHdnYmtsMFpXMXpPeUFySzJvcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdRNklHNTFiV0psY2lBOUlDaGtZWFJoVzJsZElEMDlJRzUxYkd3cElIeDhJQ2hrWVhSaFcycGRJRDA5SUc1MWJHd3BJRDhnTUNBNklHUnBjM1JoYm1ObEtHUmhkR0ZiYVYwc0lHUmhkR0ZiYWwwcE8xeHVJQ0FnSUNBZ2JXRjBjbWw0VzJsZFcycGRJRDBnYldGMGNtbDRXMnBkVzJsZElEMGdaRHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlHMWhkSEpwZUR0Y2JuMWNibHh1THlvcUlFZGxibVZ5WVhSbGN5QmhjbkpoZVNCbWNtOXRJR0VnY21GdVoyVWdXMkpsWjJsdU95QmxibVJkSUc5eUlGdGlaV2RwYmpzZ1pXNWtLU0JwWmlCbGJtUkZlR05zZFhOcGRtVXVJQ29xTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGJsSmhibWRsS0dKbFoybHVPaUJ1ZFcxaVpYSXNJR1Z1WkRvZ2JuVnRZbVZ5TENCbGJtUkZlR05zZFhOcGRtVWdQU0JtWVd4elpTazZJRWx1ZERNeVFYSnlZWGtnZTF4dUlDQmpiMjV6ZENCdVNYUmxiWE1nUFNCbGJtUWdMU0JpWldkcGJpQXJJQ2hsYm1SRmVHTnNkWE5wZG1VZ1B5QXdJRG9nTVNrN1hHNGdJR052Ym5OMElITmxjbWxsY3lBOUlHNWxkeUJKYm5Rek1rRnljbUY1S0c1SmRHVnRjeWs3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNsY2JpQWdJQ0J6WlhKcFpYTmJhVjBnUFNCaVpXZHBiaUFySUdrN1hHNWNiaUFnY21WMGRYSnVJSE5sY21sbGN6dGNibjFjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUc5eVpHVnlJRzltSUhaaGJIVmxjeUJoY3lCcFppQjBhR1Y1SUdGeVpTQnpiM0owWldRdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSEJoY21GdElIdGhibmxiWFgwZ2RtRnNkV1Z6SUVsdWNIVjBJR0Z5Y21GNUxseHVJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0JiY21WMlpYSnpaVDFtWVd4elpWMGdWMmhsZEdobGNpQjBieUJ5WlhSMWNtNGdjbVYyWlhKelpXUWdiM0prWlhJdVhHNGdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSmJYWDBnVkdobElHOXlaR1Z5SUdOdmJYQjFkR1ZrTGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZWEpuVTI5eWRDaDJZV3gxWlhNNklHRnVlVnRkTENCeVpYWmxjbk5sSUQwZ1ptRnNjMlVwT2lCdWRXMWlaWEpiWFNCN1hHNGdJR052Ym5OMElITnZjblJtYmlBOUlISmxkbVZ5YzJVZ1B5QW9ZVG9nWVc1NVcxMHNJR0k2SUdGdWVWdGRLU0E5UGlBb1lsc3dYU0F0SUdGYk1GMHBJRG9nS0dFNklHRnVlVnRkTENCaU9pQmhibmxiWFNrZ1BUNGdLR0ZiTUYwZ0xTQmlXekJkS1R0Y2JpQWdZMjl1YzNRZ1pHVmpiM0lnUFNBb2Rqb2dZVzU1TENCcE9pQnVkVzFpWlhJcElEMCtJRnQyTENCcFhUc2dMeThnYzJWMElHbHVaR1Y0SUhSdklIWmhiSFZsWEc0Z0lHTnZibk4wSUhWdVpHVmpiM0lnUFNBb1lUb2dZVzU1VzEwcElEMCtJR0ZiTVYwN0lDOHZJR3hsWVhabElHOXViSGtnYVc1a1pYaGNiaUFnWTI5dWMzUWdYMkZ5WjNOdmNuUWdQU0FvWVhKeU9pQmhibmxiWFNrZ1BUNGdZWEp5TG0xaGNDaGtaV052Y2lrdWMyOXlkQ2h6YjNKMFptNHBMbTFoY0NoMWJtUmxZMjl5S1R0Y2JpQWdjbVYwZFhKdUlGOWhjbWR6YjNKMEtIWmhiSFZsY3lrN1hHNTlYRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUIwYUdVZ2FXNWtaWGhsY3lCdlppQjBhR1VnYlc5emRDQmthWFpsY25ObElHOWlhbVZqZEhNZ1lXTmpiM0prYVc1bklIUnZJSFJvWlNCa2FYTjBJR1oxYm1OMGFXOXVYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYkdWdVozUm9JSFJ2ZEdGc0lHNTFiV0psY2lCdlppQnZZbXBsWTNSelhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdiaUJ1ZFcxaVpYSWdiMllnWkdsMlpYSnpaU0JsYkdWdFpXNTBjeUIwYnlCbWFXNWtYRzRnS2lCQWNHRnlZVzBnZXlocE1Ub2diblZ0WW1WeUxDQnBNam9nYm5WdFltVnlLU0E5UGlCdWRXMWlaWEo5SUdScGMzUWdZU0JtZFc1amRHbHZiaUIzYUdsamFDQmpZV3hqZFd4aGRHVnpJR1JwYzNSaGJtTmxJR0psZEhkbFpXNWNiaUFxSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBkMjhnYjJKcVpXTjBjeUIxYzJsdVp5QjBhR1ZwY2lCcGJtUmxlR1Z6WEc0Z0tpQkFjbVYwZFhKdWN5QjdiblZ0WW1WeVcxMTlJRlJvWlNCcGJtUmxlR1Z6SUc5bUlIUm9aU0J0YjNOMElHUnBkbVZ5YzJVZ2IySnFaV04wYzF4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwUkdsMlpYSnpaVk4xWW5ObGRDaHNaVzVuZEdnNklHNTFiV0psY2l3Z2Jqb2diblZ0WW1WeUxDQmthWE4wT2lBb2FURTZJRzUxYldKbGNpd2dhVEk2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5S1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0JtZFc1amRHbHZiaUJ0WVhoQ2VTaDJZV3gxWlhNNklFbDBaWEpoWW14bFNYUmxjbUYwYjNJOGJuVnRZbVZ5UGl3Z2IzSmtaWEpDZVRvZ0tHazZJRzUxYldKbGNpa2dQVDRnYm5WdFltVnlLU0I3WEc0Z0lDQWdiR1YwSUcxaGVGWmhiSFZsSUQwZ2JuVnNiRHRjYmlBZ0lDQnNaWFFnYldGNFQzSmtaWEpDZVNBOUlHNTFiR3c3WEc1Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUdWc1pXMWxiblFnYjJZZ2RtRnNkV1Z6S1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JsYkdWdFpXNTBUM0prWlhKQ2VTQTlJRzl5WkdWeVFua29aV3hsYldWdWRDazdYRzRnSUNBZ0lDQnBaaUFvYldGNFQzSmtaWEpDZVNBOVBTQnVkV3hzSUh4OElHVnNaVzFsYm5SUGNtUmxja0o1SUQ0Z2JXRjRUM0prWlhKQ2VTa2dlMXh1SUNBZ0lDQWdJQ0J0WVhoV1lXeDFaU0E5SUdWc1pXMWxiblE3WEc0Z0lDQWdJQ0FnSUcxaGVFOXlaR1Z5UW5rZ1BTQmxiR1Z0Wlc1MFQzSmtaWEpDZVR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHMWhlRlpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdZMjl1YzNRZ2MzVmljMlYwSUQwZ1czSmhibVJ2YlVsdWRDaHNaVzVuZEdnZ0xTQXhLVjA3WEc0Z0lHTnZibk4wSUdOdmJYQnNaVzFsYm5RZ1BTQnVaWGNnVTJWMEtDazdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnNaVzVuZEdnN0lDc3JhU2tnZTF4dUlDQWdJR2xtSUNnaGMzVmljMlYwTG1sdVkyeDFaR1Z6S0drcEtWeHVJQ0FnSUNBZ1kyOXRjR3hsYldWdWRDNWhaR1FvYVNrN1hHNGdJSDFjYmx4dUlDQjNhR2xzWlNBb2MzVmljMlYwTG14bGJtZDBhQ0E4SUc0cElIdGNiaUFnSUNCamIyNXpkQ0JwWkhnZ1BTQnRZWGhDZVNoY2JpQWdJQ0FnSUdOdmJYQnNaVzFsYm5RdWRtRnNkV1Z6S0NrZ1lYTWdTWFJsY21GaWJHVkpkR1Z5WVhSdmNqeHVkVzFpWlhJK0xGeHVJQ0FnSUNBZ0tHa3BJRDArSUUxaGRHZ3ViV2x1TG1Gd2NHeDVLRTFoZEdnc0lITjFZbk5sZEM1dFlYQW9ablZ1WTNScGIyNG9kbUZzTENCcGJtUmxlQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWkdsemRDaHBMQ0IyWVd3cE8xeHVJQ0FnSUNBZ2ZTa3BLVHRjYmlBZ0lDQnBaaUFvYVdSNEtTQjdYRzRnSUNBZ0lDQnpkV0p6WlhRdWNIVnphQ2hwWkhncE8xeHVJQ0FnSUNBZ1kyOXRjR3hsYldWdWRDNWtaV3hsZEdVb2FXUjRLVHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlITjFZbk5sZER0Y2JuMWNibHh1THlvcVhHNGdLaUJTWlhSMWNtNXpJRzV2Y20xaGJHbDZaV1FnZG1WamRHOXlYRzRnS2lCQWNHRnlZVzBnZTFabFkzUnZjbjBnWkdGMFlTQnVkVzFsY21sallXd2dZWEp5WVhsY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRzV2Y20xaGJHbDZaU2hrWVhSaE9pQldaV04wYjNJcE9pQldaV04wYjNJZ2UxeHVJQ0JzWlhRZ2JXVmhiaUE5SURBN1hHNGdJR3hsZENCemRHUWdQU0F3TzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWkdGMFlTNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQnRaV0Z1SUNzOUlHUmhkR0ZiYVYwN1hHNWNiaUFnYldWaGJpQXZQU0JrWVhSaExteGxibWQwYUR0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdSaGRHRXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdjM1JrSUNzOUlDaGtZWFJoVzJsZElDMGdiV1ZoYmlrZ0tpQW9aR0YwWVZ0cFhTQXRJRzFsWVc0cE8xeHVYRzRnSUhOMFpDQTlJRTFoZEdndWMzRnlkQ2h6ZEdRZ0x5QmtZWFJoTG14bGJtZDBhQ2s3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JrWVhSaExteGxibWQwYURzZ0t5dHBLVnh1SUNBZ0lHUmhkR0ZiYVYwZ1BTQW9aR0YwWVZ0cFhTQXRJRzFsWVc0cElDOGdjM1JrTzF4dVhHNGdJSEpsZEhWeWJpQmtZWFJoTzF4dWZWeHVYRzR2S2lwY2JpQXFJRVpwYm1SeklITmxkQ0JrYVdabVpYSmxibU5sSUdKbGRIZGxaVzRnZEhkdklHeHBjM1J6TGx4dUlDb2dRSEJoY21GdElIdGhibmxiWFgwZ1lTQlVhR1VnWm1seWMzUWdiR2x6ZEM1Y2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlHSWdWR2hsSUhObFkyOXVaQ0JzYVhOMExseHVJQ29nUUhKbGRIVnliaUI3WVc1NVcxMTlYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCelpYUkVhV1ptWlhKbGJtTmxLR0U2SUdGdWVWdGRMQ0JpT2lCaGJubGJYU2s2SUdGdWVWdGRJSHRjYmlBZ1kyOXVjM1FnWWxObGRDQTlJRzVsZHlCVFpYUW9ZaWs3WEc0Z0lISmxkSFZ5YmlCQmNuSmhlUzVtY205dEtHNWxkeUJUWlhRb1lTNW1hV3gwWlhJb0tIZ3BJRDArSUNGaVUyVjBMbWhoY3loNEtTa3BMblpoYkhWbGN5Z3BLVHRjYm4xY2JpSmRmUT09IiwiaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgQW1pbm9hY2lkc1BhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgTGVzaygpIHtcbiAgICAgICAgaWYgKHRoaXMubGVzayA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmxlc2sgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydHJywgJ0EnLCAnUycsICdUJ10sICdvcmFuZ2UnXSxcbiAgICAgICAgICAgICAgICBbWydDJywgJ1YnLCAnSScsICdMJywgJ1AnLCAnRicsICdZJywgJ00nLCAnVyddLCAnYWxsX2dyZWVuJ10sXG4gICAgICAgICAgICAgICAgW1snTicsICdRJywgJ0gnXSwgJ21hZ2VudGEnXSxcbiAgICAgICAgICAgICAgICBbWydEJywgJ0UnXSwgJ3JlZCddLFxuICAgICAgICAgICAgICAgIFtbJ0snLCAnUiddLCAnYWxsX2JsdWUnXSxcbiAgICAgICAgICAgIF0sIGZhbHNlLCBBbWlub2FjaWRzUGFsZXR0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmxlc2s7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgR3Jva0dyb3VwcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3Jva0dyb3VwcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmdyb2tHcm91cHMgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydDJywgJ1UnXSwgJ3llbGxvdyddLFxuICAgICAgICAgICAgICAgIFtbJ0cnLCAnUCddLCAncmVkJ10sXG4gICAgICAgICAgICAgICAgW1snQScsICdWJywgJ0knLCAnTCcsICdNJywgJ0YnLCAnWScsICdXJ10sICdhbGxfZ3JlZW4nXSxcbiAgICAgICAgICAgICAgICBbWydSJywgJ0gnLCAnSyddLCAnbGlnaHRfYmx1ZSddLFxuICAgICAgICAgICAgICAgIFtbJ0QnLCAnRSddLCAnZGFya19ibHVlJ10sXG4gICAgICAgICAgICAgICAgW1snUycsICdUJywgJ04nLCAnUSddLCAnb3JhbmdlJ10sXG4gICAgICAgICAgICBdLCBmYWxzZSwgQW1pbm9hY2lkc1BhbGV0dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ncm9rR3JvdXBzO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0IFJhc01vbCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmFzTW9sID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMucmFzTW9sID0gbmV3IEFtaW5vYWNpZHNQYWxldHRlcyh7XG4gICAgICAgICAgICAgICAgLy8gaHR0cDovL2FjY2VzLmVucy1seW9uLmZyL2Jpb3RpYy9yYXN0b3AvaGVscC9jb2xvdXIuaHRtXG4gICAgICAgICAgICAgICAgJ0QnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0UnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0MnOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ00nOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ0snOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1InOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1MnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ1QnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ0YnOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ1knOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ04nOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ1EnOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ0cnOiAnI0VCRUJFQicsXG4gICAgICAgICAgICAgICAgJ0wnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ1YnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0knOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0EnOiAnI0M4QzhDOCcsXG4gICAgICAgICAgICAgICAgJ1cnOiAnI0I0NUFCNCcsXG4gICAgICAgICAgICAgICAgJ0gnOiAnIzgyODJEMicsXG4gICAgICAgICAgICAgICAgJ1AnOiAnI0RDOTY4MicsXG4gICAgICAgICAgICAgICAgJ290aGVycyc6ICcjQkVBMDZFJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJhc01vbDtcbiAgICB9XG4gICAgZ2V0KG0pIHtcbiAgICAgICAgY29uc3QgcmVzTSA9IG0gaW4gQW1pbm9hY2lkc1BhbGV0dGVzLmFhU3lub255bXMgPyBBbWlub2FjaWRzUGFsZXR0ZXMuYWFTeW5vbnltc1ttXSA6IG07XG4gICAgICAgIGNvbnN0IHJlcyA9IHN1cGVyLmdldChyZXNNKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG59XG4vKiogT25seSBzb21lIG9mIHRoZSBzeW5vbnltcy4gVGhlc2Ugd2VyZSBvYnRhaW5lZCBmcm9tIHRoZSBjbHVzdGVyZWQgb2xpZ29wZXB0aWRlIGRhdGFzZXQuICovXG5BbWlub2FjaWRzUGFsZXR0ZXMuYWFTeW5vbnltcyA9IHtcbiAgICAnTWVObGUnOiAnTCcsXG4gICAgJ01lQSc6ICdBJyxcbiAgICAnTWVHJzogJ0cnLFxuICAgICdNZUYnOiAnRicsXG59O1xuZXhwb3J0IGNsYXNzIEFtaW5vYWNpZHMge1xuICAgIHN0YXRpYyBnZXRQYWxldHRlKHNjaGVtZSA9ICdncm9rJykge1xuICAgICAgICBzd2l0Y2ggKHNjaGVtZSkge1xuICAgICAgICAgICAgY2FzZSAnZ3Jvayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzO1xuICAgICAgICAgICAgY2FzZSAnbGVzayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5MZXNrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENoZW1QYWxldHRlOiBzY2hlbWUgXFxgJHtzY2hlbWV9XFxgIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBkaXZpZGVkIGFtaW5vIGFjaWQgd2l0aCBpdHMgY29udGVudCBpbiB0aGUgYnJhY2tldCwgaWYgdGhlIGNvbnRlbnQgaXMgbnVtYmVyLCB0aGVuIGl0cyBvbWl0dGVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYyByYXcgYW1pbm9cbiAgICAgKiBAcmV0dXJuIHtbc3RyaW5nLCBzdHJpbmddfSBvdXRlciBhbmQgaW5uZXIgY29udGVudFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRJbm5lck91dGVyKGMpIHtcbiAgICAgICAgbGV0IGlzSW5uZXIgPSAwO1xuICAgICAgICBsZXQgaW5uZXIgPSAnJztcbiAgICAgICAgbGV0IG91dGVyID0gJyc7XG4gICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBjKSB7XG4gICAgICAgICAgICBpZiAoY2hhciA9PSAnKCcpXG4gICAgICAgICAgICAgICAgaXNJbm5lcisrO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PSAnKScpXG4gICAgICAgICAgICAgICAgaXNJbm5lci0tO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNJbm5lcilcbiAgICAgICAgICAgICAgICBpbm5lciArPSBjaGFyO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG91dGVyICs9IGNoYXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFpc05hTihwYXJzZUludChpbm5lcikpID8gW291dGVyLCAnJ10gOiBbb3V0ZXIsIGlubmVyXTtcbiAgICB9XG4gICAgc3RhdGljIGdldENvbG9yQUFQaXZvdChtb25vbWVyID0gJycsIHNjaGVtZSA9ICdncm9rJykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgLy9jb25zdCBjaGVtUGFsZXR0ZUluc3RhbmNlID0gQUFQYWxldHRlcy5Hcm9rR3JvdXBzKCk7XG4gICAgICAgIGNvbnN0IGNoZW1QYWxldHRlSW5zdGFuY2UgPSB0aGlzLmdldFBhbGV0dGUoc2NoZW1lKTtcbiAgICAgICAgbGV0IFtvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lcl0gPSB0aGlzLmdldElubmVyT3V0ZXIobW9ub21lcik7XG4gICAgICAgIG91dGVyTW9ub21lciA9IChvdXRlck1vbm9tZXIubGVuZ3RoID4gNiA/IGAke291dGVyTW9ub21lci5zbGljZSgwLCAzKX0uLi5gIDogb3V0ZXJNb25vbWVyKTtcbiAgICAgICAgaW5uZXJNb25vbWVyID0gKGlubmVyTW9ub21lci5sZW5ndGggPiA2ID8gYCR7aW5uZXJNb25vbWVyLnNsaWNlKDAsIDMpfS4uLmAgOiBpbm5lck1vbm9tZXIpO1xuICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gMSB8fCBtb25vbWVyWzFdID09ICcoJykge1xuICAgICAgICAgICAgY29uc3QgYW1pbm8gPSAoX2EgPSBtb25vbWVyWzBdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZS5nZXQoYW1pbm8pLCBhbWlubywgaW5uZXJNb25vbWVyLCAxXSA6XG4gICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAxXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobW9ub21lclswXSA9PSAnZCcgJiYgbW9ub21lclsxXSBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gMiB8fCBtb25vbWVyWzJdID09ICcoJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gKF9iID0gbW9ub21lclsxXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZS5nZXQoYW1pbm8pLCBhbWlubywgaW5uZXJNb25vbWVyLCAyXSA6XG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgMl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vbm9tZXIuc3Vic3RyaW5nKDAsIDMpIGluIHRoaXMuQUFGdWxsTmFtZXMpIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSAzIHx8IG1vbm9tZXJbM10gPT0gJygnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW1pbm8gPSB0aGlzLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDAsIDMpXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDNdIDpcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKChfYyA9IG1vbm9tZXJbMF0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy50b0xvd2VyQ2FzZSgpKSA9PSBtb25vbWVyWzBdKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lci5zdWJzdHJpbmcoMSwgMykgaW4gdGhpcy5BQUZ1bGxOYW1lcykge1xuICAgICAgICAgICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSA0IHx8IG1vbm9tZXJbNF0gPT0gJygnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gdGhpcy5BQUZ1bGxOYW1lc1ttb25vbWVyLnN1YnN0cmluZygxLCAzKV07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDRdIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgNF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDBdO1xuICAgIH1cbn1cbkFtaW5vYWNpZHMuU2VtVHlwZSA9ICdBbWlub2FjaWRzJztcbkFtaW5vYWNpZHMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50ID0gJ0FtaW5vYWNpZHNNdWx0aXBsZUFsaWdubWVudCc7XG5BbWlub2FjaWRzLnVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuQW1pbm9hY2lkcy5OYW1lcyA9IHtcbiAgICAnRyc6ICdHbHljaW5lJyxcbiAgICAnTCc6ICdMZXVjaW5lJyxcbiAgICAnWSc6ICdUeXJvc2luZScsXG4gICAgJ1MnOiAnU2VyaW5lJyxcbiAgICAnRSc6ICdHbHV0YW1pYyBhY2lkJyxcbiAgICAnUSc6ICdHbHV0YW1pbmUnLFxuICAgICdEJzogJ0FzcGFydGljIGFjaWQnLFxuICAgICdOJzogJ0FzcGFyYWdpbmUnLFxuICAgICdGJzogJ1BoZW55bGFsYW5pbmUnLFxuICAgICdBJzogJ0FsYW5pbmUnLFxuICAgICdLJzogJ0x5c2luZScsXG4gICAgJ1InOiAnQXJnaW5pbmUnLFxuICAgICdIJzogJ0hpc3RpZGluZScsXG4gICAgJ0MnOiAnQ3lzdGVpbmUnLFxuICAgICdWJzogJ1ZhbGluZScsXG4gICAgJ1AnOiAnUHJvbGluZScsXG4gICAgJ1cnOiAnVHJ5cHRvcGhhbicsXG4gICAgJ0knOiAnSXNvbGV1Y2luZScsXG4gICAgJ00nOiAnTWV0aGlvbmluZScsXG4gICAgJ1QnOiAnVGhyZW9uaW5lJyxcbn07XG5BbWlub2FjaWRzLkFBU21pbGVzID0ge1xuICAgICdHJzogJ05DQyg9TylPJyxcbiAgICAnTCc6ICdOW0NASF0oQ0MoQylDKUMoPU8pTycsXG4gICAgJ1knOiAnTkMoQ0MxPUNDPUMoTylDPUMxKUMoPU8pTycsXG4gICAgJ1MnOiAnTkMoQ08pQyg9TylPJyxcbiAgICAnRSc6ICdOW0NAQEhdKENDQyhPKT1PKUMoPU8pTycsXG4gICAgJ1EnOiAnTltDQEBIXShDQ0MoTik9TylDKD1PKU8nLFxuICAgICdEJzogJ05bQ0BASF0oQ0MoTyk9TylDKD1PKU8nLFxuICAgICdOJzogJ05bQ0BASF0oQ0MoTik9TylDKD1PKU8nLFxuICAgICdGJzogJ05DKENDMT1DQz1DQz1DMSlDKD1PKU8nLFxuICAgICdBJzogJ05bQ0BIXShDKUMoPU8pTycsXG4gICAgJ0snOiAnTkMoQ0NDQ04pQyg9TylPJyxcbiAgICAnUic6ICdOW0NASF0oQ0NDTkMoPU4pQylDKD1PKU8nLFxuICAgICdIJzogJ05DKENDMT1DTj1DW05dMSlDKD1PKU8nLFxuICAgICdDJzogJ05bQ0BASF0oQ1MpQyg9TylPJyxcbiAgICAnVic6ICdOQyhDKEMpQylDKD1PKU8nLFxuICAgICdQJzogJ04oQ0NDMSlDMUMoPU8pTycsXG4gICAgJ1cnOiAnTltDQEBIXShDYzFjMmNjY2NjMm4oW0hdKWMxKUMoPU8pTycsXG4gICAgJ0knOiAnTltDQEhdKFtDQEhdKEMpQ0MpQyg9TylPJyxcbiAgICAnTSc6ICdOQyhDQ1NDKUMoPU8pTycsXG4gICAgJ1QnOiAnTkMoQyhPKUMpQyg9TylPJyxcbn07XG5BbWlub2FjaWRzLkFBU21pbGVzVHJ1bmNhdGVkID0ge1xuICAgICdHJzogJypDKicsXG4gICAgJ0wnOiAnQ0MoQylDW0NASF0oKikqJyxcbiAgICAnWSc6ICdDMT1DQyg9Q0M9QzFDQygqKSopTycsXG4gICAgJ1MnOiAnT0NDKCopQyonLFxuICAgICdFJzogJypbQ0BASF0oQ0NDKE8pPU8pKicsXG4gICAgJ1EnOiAnKk5bQ0BASF0oQ0NDKE4pPU8pKicsXG4gICAgJ0QnOiAnKltDQEBIXShDQyhPKT1PKSonLFxuICAgICdOJzogJypbQ0BASF0oQ0MoTik9TykqJyxcbiAgICAnRic6ICdDMT1DQz1DKEM9QzEpQ0MoKikqJyxcbiAgICAnQSc6ICdDW0NASF0oKikqJyxcbiAgICAnSyc6ICdDKENDTilDQygqKSonLFxuICAgICdSJzogJypbQ0BIXShDQ0NOQyg9TilDKSonLFxuICAgICdIJzogJ0MxPUMoTkM9TjEpQ0MoKikqJyxcbiAgICAnQyc6ICdDKFtDQEBIXSgqKSopUycsXG4gICAgJ1YnOiAnQ0MoQylDKCopKicsXG4gICAgJ1AnOiAnQzFDQ04oKilDMSonLFxuICAgICdXJzogJypbQ0BASF0oQ2MxYzJjY2NjYzJuKFtIXSljMSkqJyxcbiAgICAnSSc6ICdDQ1tDQEhdKEMpW0NASF0oKikqJyxcbiAgICAnTSc6ICdDU0NDQygqKSonLFxuICAgICdUJzogJ0NDKE8pQygqKSonLFxufTtcbi8qKiBUT0RPOiBGdWxsP1xuICovXG5BbWlub2FjaWRzLkFBRnVsbE5hbWVzID0ge1xuICAgICdBbGEnOiAnQScsXG4gICAgJ0FyZyc6ICdSJyxcbiAgICAnQXNuJzogJ04nLFxuICAgICdBc3AnOiAnRCcsXG4gICAgJ0N5cyc6ICdDJyxcbiAgICAnR2xuJzogJ1EnLFxuICAgICdHbHUnOiAnRScsXG4gICAgJ0dseSc6ICdHJyxcbiAgICAnSGlzJzogJ0gnLFxuICAgICdJbGUnOiAnSScsXG4gICAgJ0xldSc6ICdMJyxcbiAgICAnTHlzJzogJ0snLFxuICAgICdNZXQnOiAnTScsXG4gICAgJ1BoZSc6ICdGJyxcbiAgICAnUHJvJzogJ1AnLFxuICAgICdTZXInOiAnUycsXG4gICAgJ1Rocic6ICdUJyxcbiAgICAnVHJwJzogJ1cnLFxuICAgICdUeXInOiAnWScsXG4gICAgJ1ZhbCc6ICdWJyxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZVzFwYm05aFkybGtjeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkltRnRhVzV2WVdOcFpITXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUzBFc1QwRkJUeXhGUVVGaExHTkJRV01zUlVGQlF5eE5RVUZOTEdkQ1FVRm5RaXhEUVVGRE8wRkJSVEZFTEUxQlFVMHNUMEZCVHl4clFrRkJiVUlzVTBGQlVTeGpRVUZqTzBsQlJ6ZERMRTFCUVUwc1MwRkJTeXhKUVVGSk8xRkJRM0JDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1MwRkJTeXhMUVVGTExFTkJRVU1zUlVGQlJUdFpRVU40UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTTdaMEpCUXpOQ0xFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTTdaMEpCUTJoRExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkROVVFzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzVTBGQlV5eERRVUZETzJkQ1FVTTFRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJRenRuUWtGRGJrSXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFZRVUZWTEVOQlFVTTdZVUZEZWtJc1JVRkJSU3hMUVVGTExFVkJRVVVzYTBKQlFXdENMRU5CUVVNc1EwRkJRenRUUVVNdlFqdFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRKUVVOdVFpeERRVUZETzBsQlNVMHNUVUZCVFN4TFFVRkxMRlZCUVZVN1VVRkRNVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNWVUZCVlN4TFFVRkxMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRemxDTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF6dG5Ra0ZEYWtNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4UlFVRlJMRU5CUVVNN1owSkJRM1JDTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETzJkQ1FVTnVRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF6dG5Ra0ZEZGtRc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1dVRkJXU3hEUVVGRE8yZENRVU12UWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkRla0lzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZGQlFWRXNRMEZCUXp0aFFVTnFReXhGUVVGRkxFdEJRVXNzUlVGQlJTeHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8xTkJReTlDTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRE8wbEJRM3BDTEVOQlFVTTdTVUZKVFN4TlFVRk5MRXRCUVVzc1RVRkJUVHRSUVVOMFFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1MwRkJTeXhEUVVGRExFVkJRVVU3V1VGRE1VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxHdENRVUZyUWl4RFFVRkRPMmRDUVVOdVF5eDVSRUZCZVVRN1owSkJRM3BFTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRkZCUVZFc1JVRkJSU3hUUVVGVE8yRkJRM0JDTEVOQlFVTXNRMEZCUXp0VFFVTktPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlEzSkNMRU5CUVVNN1NVRkZaU3hIUVVGSExFTkJRVU1zUTBGQlV6dFJRVU16UWl4TlFVRk5MRWxCUVVrc1IwRkJSeXhEUVVGRExFbEJRVWtzYTBKQlFXdENMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOMlJpeE5RVUZOTEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlF6VkNMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzUTBGQlF6czdRVUZGUkN3NFJrRkJPRVk3UVVGREwwVXNOa0pCUVZVc1IwRkJLMEk3U1VGRGRFUXNUMEZCVHl4RlFVRkZMRWRCUVVjN1NVRkRXaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3UTBGRFdDeERRVUZETzBGQlIwb3NUVUZCVFN4UFFVRlBMRlZCUVZVN1NVRnhSMlFzVFVGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4VFFVRnBRaXhOUVVGTk8xRkJRemxETEZGQlFWRXNUVUZCVFN4RlFVRkZPMWxCUTJoQ0xFdEJRVXNzVFVGQlRUdG5Ra0ZEVkN4UFFVRlBMR3RDUVVGclFpeERRVUZETEZWQlFWVXNRMEZCUXp0WlFVTjJReXhMUVVGTExFMUJRVTA3WjBKQlExUXNUMEZCVHl4clFrRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTTdXVUZEYWtNN1owSkJRMFVzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4NVFrRkJlVUlzVFVGQlRTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8xTkJRM0pGTzBsQlEwZ3NRMEZCUXp0SlFVVkVPenM3T3p0UFFVdEhPMGxCUTBrc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZUTzFGQlEyNURMRWxCUVVrc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5vUWl4SlFVRkpMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRFppeEpRVUZKTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkZaaXhMUVVGTExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNSVUZCUlR0WlFVTndRaXhKUVVGSkxFbEJRVWtzU1VGQlNTeEhRVUZITzJkQ1FVTmlMRTlCUVU4c1JVRkJSU3hEUVVGRE8ybENRVU5RTEVsQlFVa3NTVUZCU1N4SlFVRkpMRWRCUVVjN1owSkJRMnhDTEU5QlFVOHNSVUZCUlN4RFFVRkRPMmxDUVVOUUxFbEJRVWtzVDBGQlR6dG5Ra0ZEWkN4TFFVRkxMRWxCUVVrc1NVRkJTU3hEUVVGRE96dG5Ra0ZGWkN4TFFVRkxMRWxCUVVrc1NVRkJTU3hEUVVGRE8xTkJRMnBDTzFGQlJVUXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzBsQlEyaEZMRU5CUVVNN1NVRkZUU3hOUVVGTkxFTkJRVU1zWlVGQlpTeERRVUZETEZWQlFXdENMRVZCUVVVc1JVRkJSU3hUUVVGcFFpeE5RVUZOT3p0UlFVTjZSU3h6UkVGQmMwUTdVVUZEZEVRc1RVRkJUU3h0UWtGQmJVSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFGQlEzQkVMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVVzV1VGQldTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU12UkN4WlFVRlpMRWRCUVVjc1EwRkJReXhaUVVGWkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhaUVVGWkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0UlFVTXpSaXhaUVVGWkxFZEJRVWNzUTBGQlF5eFpRVUZaTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFpRVUZaTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRSUVVVelJpeEpRVUZKTEU5QlFVOHNRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkROVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NUVUZCUVN4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExEQkRRVUZGTEZkQlFWY3NSVUZCUnl4RFFVRkRPMWxCUTNwRExFOUJRVThzUzBGQlN5eEpRVUZKTEcxQ1FVRnRRaXhEUVVGRExFTkJRVU03WjBKQlEyNURMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFdEJRVXNzUlVGQlJTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE1VUXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRlRVE3VVVGRlJDeEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUlN4SlFVRkpMRzFDUVVGdFFpeEZRVUZGTzFsQlF6TkVMRWxCUVVrc1QwRkJUeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJUdG5Ra0ZETlVNc1RVRkJUU3hMUVVGTExFZEJRVWNzVFVGQlFTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMREJEUVVGRkxGZEJRVmNzUlVGQlJ5eERRVUZETzJkQ1FVTjZReXhQUVVGUExFdEJRVXNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8yOUNRVU51UXl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRekZFTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTNoRU8xTkJRMFk3VVVGRlJDeEpRVUZKTEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVN1dVRkRMME1zU1VGQlNTeFBRVUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZPMmRDUVVNMVF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEzaEVMRTlCUVU4c1MwRkJTeXhKUVVGSkxHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNN2IwSkJRMjVETEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRXRCUVVzc1JVRkJSU3haUVVGWkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRNVVFzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRmxCUVZrc1JVRkJSU3haUVVGWkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEZUVRN1UwRkRSanRSUVVWRUxFbEJRVWtzUTBGQlFTeE5RVUZCTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc01FTkJRVVVzVjBGQlZ5eEZRVUZGTEV0QlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk8xbEJRek5ETEVsQlFVa3NUMEZCVHl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSVHRuUWtGREwwTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhGUVVGRk8yOUNRVU0xUXl4TlFVRk5MRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTNoRUxFOUJRVThzUzBGQlN5eEpRVUZKTEcxQ1FVRnRRaXhEUVVGRExFTkJRVU03ZDBKQlEyNURMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFdEJRVXNzUlVGQlJTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenQzUWtGRE1VUXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN2FVSkJRM2hFTzJGQlEwWTdVMEZEUmp0UlFVVkVMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZGTEZsQlFWa3NSVUZCUlN4WlFVRlpMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRE9VUXNRMEZCUXpzN1FVRndUR1VzYTBKQlFVOHNSMEZCVnl4WlFVRlpMRU5CUVVNN1FVRkZMMElzYlVOQlFYZENMRWRCUVZjc05rSkJRVFpDTEVOQlFVTTdRVUZGTVVVc2VVSkJRV01zUjBGQlJ5eHJRa0ZCYTBJc1EwRkJRenRCUVVVM1FpeG5Ra0ZCU3l4SFFVRnhRanRKUVVOMFF5eEhRVUZITEVWQlFVVXNVMEZCVXp0SlFVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8wbEJRMlFzUjBGQlJ5eEZRVUZGTEZWQlFWVTdTVUZEWml4SFFVRkhMRVZCUVVVc1VVRkJVVHRKUVVOaUxFZEJRVWNzUlVGQlJTeGxRVUZsTzBsQlEzQkNMRWRCUVVjc1JVRkJSU3hYUVVGWE8wbEJRMmhDTEVkQlFVY3NSVUZCUlN4bFFVRmxPMGxCUTNCQ0xFZEJRVWNzUlVGQlJTeFpRVUZaTzBsQlEycENMRWRCUVVjc1JVRkJSU3hsUVVGbE8wbEJRM0JDTEVkQlFVY3NSVUZCUlN4VFFVRlRPMGxCUTJRc1IwRkJSeXhGUVVGRkxGRkJRVkU3U1VGRFlpeEhRVUZITEVWQlFVVXNWVUZCVlR0SlFVTm1MRWRCUVVjc1JVRkJSU3hYUVVGWE8wbEJRMmhDTEVkQlFVY3NSVUZCUlN4VlFVRlZPMGxCUTJZc1IwRkJSeXhGUVVGRkxGRkJRVkU3U1VGRFlpeEhRVUZITEVWQlFVVXNVMEZCVXp0SlFVTmtMRWRCUVVjc1JVRkJSU3haUVVGWk8wbEJRMnBDTEVkQlFVY3NSVUZCUlN4WlFVRlpPMGxCUTJwQ0xFZEJRVWNzUlVGQlJTeFpRVUZaTzBsQlEycENMRWRCUVVjc1JVRkJSU3hYUVVGWE8wTkJRMnBDTEVOQlFVTTdRVUZGV1N4dFFrRkJVU3hIUVVGeFFqdEpRVU42UXl4SFFVRkhMRVZCUVVVc1ZVRkJWVHRKUVVObUxFZEJRVWNzUlVGQlJTeHpRa0ZCYzBJN1NVRkRNMElzUjBGQlJ5eEZRVUZGTERKQ1FVRXlRanRKUVVOb1F5eEhRVUZITEVWQlFVVXNZMEZCWXp0SlFVTnVRaXhIUVVGSExFVkJRVVVzZVVKQlFYbENPMGxCUXpsQ0xFZEJRVWNzUlVGQlJTeDVRa0ZCZVVJN1NVRkRPVUlzUjBGQlJ5eEZRVUZGTEhkQ1FVRjNRanRKUVVNM1FpeEhRVUZITEVWQlFVVXNkMEpCUVhkQ08wbEJRemRDTEVkQlFVY3NSVUZCUlN4M1FrRkJkMEk3U1VGRE4wSXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdEpRVU4wUWl4SFFVRkhMRVZCUVVVc2FVSkJRV2xDTzBsQlEzUkNMRWRCUVVjc1JVRkJSU3d3UWtGQk1FSTdTVUZETDBJc1IwRkJSeXhGUVVGRkxIZENRVUYzUWp0SlFVTTNRaXhIUVVGSExFVkJRVVVzYlVKQlFXMUNPMGxCUTNoQ0xFZEJRVWNzUlVGQlJTeHBRa0ZCYVVJN1NVRkRkRUlzUjBGQlJ5eEZRVUZGTEdsQ1FVRnBRanRKUVVOMFFpeEhRVUZITEVWQlFVVXNiME5CUVc5RE8wbEJRM3BETEVkQlFVY3NSVUZCUlN3d1FrRkJNRUk3U1VGREwwSXNSMEZCUnl4RlFVRkZMR2RDUVVGblFqdEpRVU55UWl4SFFVRkhMRVZCUVVVc2FVSkJRV2xDTzBOQlEzWkNMRU5CUVVNN1FVRkZXU3cwUWtGQmFVSXNSMEZCY1VJN1NVRkRiRVFzUjBGQlJ5eEZRVUZGTEV0QlFVczdTVUZEVml4SFFVRkhMRVZCUVVVc2FVSkJRV2xDTzBsQlEzUkNMRWRCUVVjc1JVRkJSU3h6UWtGQmMwSTdTVUZETTBJc1IwRkJSeXhGUVVGRkxGVkJRVlU3U1VGRFppeEhRVUZITEVWQlFVVXNiMEpCUVc5Q08wbEJRM3BDTEVkQlFVY3NSVUZCUlN4eFFrRkJjVUk3U1VGRE1VSXNSMEZCUnl4RlFVRkZMRzFDUVVGdFFqdEpRVU40UWl4SFFVRkhMRVZCUVVVc2JVSkJRVzFDTzBsQlEzaENMRWRCUVVjc1JVRkJSU3h4UWtGQmNVSTdTVUZETVVJc1IwRkJSeXhGUVVGRkxGbEJRVms3U1VGRGFrSXNSMEZCUnl4RlFVRkZMR05CUVdNN1NVRkRia0lzUjBGQlJ5eEZRVUZGTEhGQ1FVRnhRanRKUVVNeFFpeEhRVUZITEVWQlFVVXNiVUpCUVcxQ08wbEJRM2hDTEVkQlFVY3NSVUZCUlN4blFrRkJaMEk3U1VGRGNrSXNSMEZCUnl4RlFVRkZMRmxCUVZrN1NVRkRha0lzUjBGQlJ5eEZRVUZGTEdGQlFXRTdTVUZEYkVJc1IwRkJSeXhGUVVGRkxDdENRVUVyUWp0SlFVTndReXhIUVVGSExFVkJRVVVzY1VKQlFYRkNPMGxCUXpGQ0xFZEJRVWNzUlVGQlJTeFhRVUZYTzBsQlEyaENMRWRCUVVjc1JVRkJSU3haUVVGWk8wTkJRMnhDTEVOQlFVTTdRVUZGUmp0SFFVTkhPMEZCUTFjc2MwSkJRVmNzUjBGQmNVSTdTVUZETlVNc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0RFFVTllMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ0tpQmhjeUJuY205cklHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOW5jbTlySnp0Y2JtbHRjRzl5ZENBcUlHRnpJSFZwSUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5MWFTYzdYRzVwYlhCdmNuUWdLaUJoY3lCRVJ5Qm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZaR2NuTzF4dVhHNXBiWEJ2Y25RZ2UxTjBjbWx1WjBScFkzUnBiMjVoY25sOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzUjVjR1V0WkdWamJHRnlZWFJwYjI1ekp6dGNibWx0Y0c5eWRDQjdVMlZ4VUdGc1pYUjBaU3dnVTJWeFVHRnNaWFIwWlVKaGMyVjlJR1p5YjIwZ0p5NHZjMlZ4TFhCaGJHVjBkR1Z6Snp0Y2JseHVaWGh3YjNKMElHTnNZWE56SUVGdGFXNXZZV05wWkhOUVlXeGxkSFJsY3lCbGVIUmxibVJ6SUZObGNWQmhiR1YwZEdWQ1lYTmxJSHRjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nYkdWemF6b2dVMlZ4VUdGc1pYUjBaVHRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUdkbGRDQk1aWE5yS0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxteGxjMnNnUFQwOUlIWnZhV1FnTUNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVzWlhOcklEMGdkR2hwY3k1dFlXdGxVR0ZzWlhSMFpTaGJYRzRnSUNBZ0lDQWdJRnRiSjBjbkxDQW5RU2NzSUNkVEp5d2dKMVFuWFN3Z0oyOXlZVzVuWlNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRESnl3Z0oxWW5MQ0FuU1Njc0lDZE1KeXdnSjFBbkxDQW5SaWNzSUNkWkp5d2dKMDBuTENBblZ5ZGRMQ0FuWVd4c1gyZHlaV1Z1SjEwc1hHNGdJQ0FnSUNBZ0lGdGJKMDRuTENBblVTY3NJQ2RJSjEwc0lDZHRZV2RsYm5SaEoxMHNYRzRnSUNBZ0lDQWdJRnRiSjBRbkxDQW5SU2RkTENBbmNtVmtKMTBzWEc0Z0lDQWdJQ0FnSUZ0Ykowc25MQ0FuVWlkZExDQW5ZV3hzWDJKc2RXVW5YU3hjYmlBZ0lDQWdJRjBzSUdaaGJITmxMQ0JCYldsdWIyRmphV1J6VUdGc1pYUjBaWE1wTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVzWlhOck8xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQnpkR0YwYVdNZ1ozSnZhMGR5YjNWd2N6b2dVMlZ4VUdGc1pYUjBaVHRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUdkbGRDQkhjbTlyUjNKdmRYQnpLQ2s2SUZObGNWQmhiR1YwZEdVZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG1keWIydEhjbTkxY0hNZ1BUMDlJSFp2YVdRZ01Da2dlMXh1SUNBZ0lDQWdkR2hwY3k1bmNtOXJSM0p2ZFhCeklEMGdkR2hwY3k1dFlXdGxVR0ZzWlhSMFpTaGJYRzRnSUNBZ0lDQWdJRnRiSjBNbkxDQW5WU2RkTENBbmVXVnNiRzkzSjEwc1hHNGdJQ0FnSUNBZ0lGdGJKMGNuTENBblVDZGRMQ0FuY21Wa0oxMHNYRzRnSUNBZ0lDQWdJRnRiSjBFbkxDQW5WaWNzSUNkSkp5d2dKMHduTENBblRTY3NJQ2RHSnl3Z0oxa25MQ0FuVnlkZExDQW5ZV3hzWDJkeVpXVnVKMTBzWEc0Z0lDQWdJQ0FnSUZ0YkoxSW5MQ0FuU0Njc0lDZExKMTBzSUNkc2FXZG9kRjlpYkhWbEoxMHNYRzRnSUNBZ0lDQWdJRnRiSjBRbkxDQW5SU2RkTENBblpHRnlhMTlpYkhWbEoxMHNYRzRnSUNBZ0lDQWdJRnRiSjFNbkxDQW5WQ2NzSUNkT0p5d2dKMUVuWFN3Z0oyOXlZVzVuWlNkZExGeHVJQ0FnSUNBZ1hTd2dabUZzYzJVc0lFRnRhVzV2WVdOcFpITlFZV3hsZEhSbGN5azdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtZHliMnRIY205MWNITTdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5QnlZWE5OYjJ3NklGTmxjVkJoYkdWMGRHVTdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhRZ1VtRnpUVzlzS0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxuSmhjMDF2YkNBOVBUMGdkbTlwWkNBd0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG5KaGMwMXZiQ0E5SUc1bGR5QkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTW9lMXh1SUNBZ0lDQWdJQ0F2THlCb2RIUndPaTh2WVdOalpYTXVaVzV6TFd4NWIyNHVabkl2WW1sdmRHbGpMM0poYzNSdmNDOW9aV3h3TDJOdmJHOTFjaTVvZEcxY2JpQWdJQ0FnSUNBZ0owUW5PaUFuSTBVMk1FRXdRU2NzSUM4dklHRnpjQ3dnWVhOd1lYSjBhV01nWVdOcFpDd2dZWE53WEc0Z0lDQWdJQ0FnSUNkRkp6b2dKeU5GTmpCQk1FRW5MQ0F2THlCbmJIVXNJR2RzZFhSaGJXbGpJR0ZqYVdSY2JpQWdJQ0FnSUNBZ0owTW5PaUFuSTBVMlJUWXdNQ2NzSUM4dklHTjVjeXdnWTNsemRHVnBibVZjYmlBZ0lDQWdJQ0FnSjAwbk9pQW5JMFUyUlRZd01DY3NJQzh2SUcxbGRDd2diV1YwYUdsdmJtbHVaVnh1SUNBZ0lDQWdJQ0FuU3ljNklDY2pNVFExUVVaR0p5d2dMeThnYkhsekxDQnNlWE5wYm1WY2JpQWdJQ0FnSUNBZ0oxSW5PaUFuSXpFME5VRkdSaWNzSUM4dklHRnlaeXdnWVhKbmFXNXBibVZjYmlBZ0lDQWdJQ0FnSjFNbk9pQW5JMFpCT1RZd01DY3NJQzh2SUhObGNpd2djMlZ5YVc1bFhHNGdJQ0FnSUNBZ0lDZFVKem9nSnlOR1FUazJNREFuTENBdkx5QjBhSElzSUhSb2NtVnZibWx1WlZ4dUlDQWdJQ0FnSUNBblJpYzZJQ2NqTXpJek1rRkJKeXdnTHk4Z2NHaGxMQ0J3YUdWdWVXeGhiR0Z1YVc1bFhHNGdJQ0FnSUNBZ0lDZFpKem9nSnlNek1qTXlRVUVuTENBdkx5QjBlWElzSUhSNWNtOXphVzVsWEc0Z0lDQWdJQ0FnSUNkT0p6b2dKeU13TUVSRFJFTW5MQ0F2THlCaGMyNHNJR0Z6Y0dGeVlXZHBibVZjYmlBZ0lDQWdJQ0FnSjFFbk9pQW5JekF3UkVORVF5Y3NJQzh2SUdkc2Jpd2daMngxZEdGdGFXNWxYRzRnSUNBZ0lDQWdJQ2RISnpvZ0p5TkZRa1ZDUlVJbkxDQXZMeUJuYkhrc0lHZHNlV05wYm1WY2JpQWdJQ0FnSUNBZ0owd25PaUFuSXpCR09ESXdSaWNzSUM4dklHeGxkU3dnYkdWMVkybHVaVnh1SUNBZ0lDQWdJQ0FuVmljNklDY2pNRVk0TWpCR0p5d2dMeThnZG1Gc0xDQjJZV3hwYm1WY2JpQWdJQ0FnSUNBZ0owa25PaUFuSXpCR09ESXdSaWNzSUM4dklHbHNaU3dnYVhOdmJHVjFZMmx1WlZ4dUlDQWdJQ0FnSUNBblFTYzZJQ2NqUXpoRE9FTTRKeXdnTHk4Z1lXeGhMQ0JoYkdGdWFXNWxYRzRnSUNBZ0lDQWdJQ2RYSnpvZ0p5TkNORFZCUWpRbkxDQXZMeUIwY25Bc0lIUnllWEIwYjNCb1lXNWNiaUFnSUNBZ0lDQWdKMGduT2lBbkl6Z3lPREpFTWljc0lDOHZJR2hwY3l3Z2FHbHpkR2xrYVc1bFhHNGdJQ0FnSUNBZ0lDZFFKem9nSnlORVF6azJPREluTENBdkx5QndjbThzSUhCeWIyeHBibVZjYmlBZ0lDQWdJQ0FnSjI5MGFHVnljeWM2SUNjalFrVkJNRFpGSnl4Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1eVlYTk5iMnc3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYjNabGNuSnBaR1VnWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ1kyOXVjM1FnY21WelRTQTlJRzBnYVc0Z1FXMXBibTloWTJsa2MxQmhiR1YwZEdWekxtRmhVM2x1YjI1NWJYTWdQeUJCYldsdWIyRmphV1J6VUdGc1pYUjBaWE11WVdGVGVXNXZibmx0YzF0dFhTQTZJRzA3WEc0Z0lDQWdZMjl1YzNRZ2NtVnpJRDBnYzNWd1pYSXVaMlYwS0hKbGMwMHBPMXh1SUNBZ0lISmxkSFZ5YmlCeVpYTTdYRzRnSUgxY2JseHVJQ0F2S2lvZ1QyNXNlU0J6YjIxbElHOW1JSFJvWlNCemVXNXZibmx0Y3k0Z1ZHaGxjMlVnZDJWeVpTQnZZblJoYVc1bFpDQm1jbTl0SUhSb1pTQmpiSFZ6ZEdWeVpXUWdiMnhwWjI5d1pYQjBhV1JsSUdSaGRHRnpaWFF1SUNvdlhHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHRmhVM2x1YjI1NWJYTTZJSHNnVzI1aGJXVTZJSE4wY21sdVoxMDZJSE4wY21sdVp5QjlJRDBnZTF4dUlDQWdJQ2ROWlU1c1pTYzZJQ2RNSnl3Z0x5OGdUbXhsSUMwZ2JtOXliR1YxWTJsdVpWeHVJQ0FnSUNkTlpVRW5PaUFuUVNjc1hHNGdJQ0FnSjAxbFJ5YzZJQ2RISnl4Y2JpQWdJQ0FuVFdWR0p6b2dKMFluTEZ4dUlDQjlPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nUVcxcGJtOWhZMmxrY3lCN1hHNGdJSE4wWVhScFl5QnlaV0ZrYjI1c2VTQlRaVzFVZVhCbE9pQnpkSEpwYm1jZ1BTQW5RVzFwYm05aFkybGtjeWM3WEc1Y2JpQWdjM1JoZEdsaklISmxZV1J2Ym14NUlGTmxiVlI1Y0dWTmRXeDBhWEJzWlVGc2FXZHViV1Z1ZERvZ2MzUnlhVzVuSUQwZ0owRnRhVzV2WVdOcFpITk5kV3gwYVhCc1pVRnNhV2R1YldWdWRDYzdYRzVjYmlBZ2MzUmhkR2xqSUhWdVpHVm1hVzVsWkVOdmJHOXlJRDBnSjNKbllpZ3hNREFzTVRBd0xERXdNQ2tuTzF4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1RtRnRaWE02SUZOMGNtbHVaMFJwWTNScGIyNWhjbmtnUFNCN1hHNGdJQ0FnSjBjbk9pQW5SMng1WTJsdVpTY3NYRzRnSUNBZ0owd25PaUFuVEdWMVkybHVaU2NzWEc0Z0lDQWdKMWtuT2lBblZIbHliM05wYm1VbkxGeHVJQ0FnSUNkVEp6b2dKMU5sY21sdVpTY3NYRzRnSUNBZ0owVW5PaUFuUjJ4MWRHRnRhV01nWVdOcFpDY3NYRzRnSUNBZ0oxRW5PaUFuUjJ4MWRHRnRhVzVsSnl4Y2JpQWdJQ0FuUkNjNklDZEJjM0JoY25ScFl5QmhZMmxrSnl4Y2JpQWdJQ0FuVGljNklDZEJjM0JoY21GbmFXNWxKeXhjYmlBZ0lDQW5SaWM2SUNkUWFHVnVlV3hoYkdGdWFXNWxKeXhjYmlBZ0lDQW5RU2M2SUNkQmJHRnVhVzVsSnl4Y2JpQWdJQ0FuU3ljNklDZE1lWE5wYm1VbkxGeHVJQ0FnSUNkU0p6b2dKMEZ5WjJsdWFXNWxKeXhjYmlBZ0lDQW5TQ2M2SUNkSWFYTjBhV1JwYm1VbkxGeHVJQ0FnSUNkREp6b2dKME41YzNSbGFXNWxKeXhjYmlBZ0lDQW5WaWM2SUNkV1lXeHBibVVuTEZ4dUlDQWdJQ2RRSnpvZ0oxQnliMnhwYm1VbkxGeHVJQ0FnSUNkWEp6b2dKMVJ5ZVhCMGIzQm9ZVzRuTEZ4dUlDQWdJQ2RKSnpvZ0owbHpiMnhsZFdOcGJtVW5MRnh1SUNBZ0lDZE5Kem9nSjAxbGRHaHBiMjVwYm1VbkxGeHVJQ0FnSUNkVUp6b2dKMVJvY21WdmJtbHVaU2NzWEc0Z0lIMDdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJCUVZOdGFXeGxjem9nVTNSeWFXNW5SR2xqZEdsdmJtRnllU0E5SUh0Y2JpQWdJQ0FuUnljNklDZE9RME1vUFU4cFR5Y3NYRzRnSUNBZ0owd25PaUFuVGx0RFFFaGRLRU5ES0VNcFF5bERLRDFQS1U4bkxGeHVJQ0FnSUNkWkp6b2dKMDVES0VORE1UMURRejFES0U4cFF6MURNU2xES0QxUEtVOG5MRnh1SUNBZ0lDZFRKem9nSjA1REtFTlBLVU1vUFU4cFR5Y3NYRzRnSUNBZ0owVW5PaUFuVGx0RFFFQklYU2hEUTBNb1R5azlUeWxES0QxUEtVOG5MRnh1SUNBZ0lDZFJKem9nSjA1YlEwQkFTRjBvUTBOREtFNHBQVThwUXlnOVR5bFBKeXhjYmlBZ0lDQW5SQ2M2SUNkT1cwTkFRRWhkS0VOREtFOHBQVThwUXlnOVR5bFBKeXhjYmlBZ0lDQW5UaWM2SUNkT1cwTkFRRWhkS0VOREtFNHBQVThwUXlnOVR5bFBKeXhjYmlBZ0lDQW5SaWM2SUNkT1F5aERRekU5UTBNOVEwTTlRekVwUXlnOVR5bFBKeXhjYmlBZ0lDQW5RU2M2SUNkT1cwTkFTRjBvUXlsREtEMVBLVThuTEZ4dUlDQWdJQ2RMSnpvZ0owNURLRU5EUTBOT0tVTW9QVThwVHljc1hHNGdJQ0FnSjFJbk9pQW5UbHREUUVoZEtFTkRRMDVES0QxT0tVTXBReWc5VHlsUEp5eGNiaUFnSUNBblNDYzZJQ2RPUXloRFF6RTlRMDQ5UTF0T1hURXBReWc5VHlsUEp5eGNiaUFnSUNBblF5YzZJQ2RPVzBOQVFFaGRLRU5US1VNb1BVOHBUeWNzWEc0Z0lDQWdKMVluT2lBblRrTW9ReWhES1VNcFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVUNjNklDZE9LRU5EUXpFcFF6RkRLRDFQS1U4bkxGeHVJQ0FnSUNkWEp6b2dKMDViUTBCQVNGMG9RMk14WXpKalkyTmpZekp1S0Z0SVhTbGpNU2xES0QxUEtVOG5MRnh1SUNBZ0lDZEpKem9nSjA1YlEwQklYU2hiUTBCSVhTaERLVU5ES1VNb1BVOHBUeWNzWEc0Z0lDQWdKMDBuT2lBblRrTW9RME5UUXlsREtEMVBLVThuTEZ4dUlDQWdJQ2RVSnpvZ0owNURLRU1vVHlsREtVTW9QVThwVHljc1hHNGdJSDA3WEc1Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCQlFWTnRhV3hsYzFSeWRXNWpZWFJsWkRvZ1UzUnlhVzVuUkdsamRHbHZibUZ5ZVNBOUlIdGNiaUFnSUNBblJ5YzZJQ2NxUXlvbkxGeHVJQ0FnSUNkTUp6b2dKME5ES0VNcFExdERRRWhkS0NvcEtpY3NYRzRnSUNBZ0oxa25PaUFuUXpFOVEwTW9QVU5EUFVNeFEwTW9LaWtxS1U4bkxGeHVJQ0FnSUNkVEp6b2dKMDlEUXlncUtVTXFKeXhjYmlBZ0lDQW5SU2M2SUNjcVcwTkFRRWhkS0VORFF5aFBLVDFQS1NvbkxGeHVJQ0FnSUNkUkp6b2dKeXBPVzBOQVFFaGRLRU5EUXloT0tUMVBLU29uTEZ4dUlDQWdJQ2RFSnpvZ0p5cGJRMEJBU0Ywb1EwTW9UeWs5VHlrcUp5eGNiaUFnSUNBblRpYzZJQ2NxVzBOQVFFaGRLRU5ES0U0cFBVOHBLaWNzWEc0Z0lDQWdKMFluT2lBblF6RTlRME05UXloRFBVTXhLVU5ES0NvcEtpY3NYRzRnSUNBZ0owRW5PaUFuUTF0RFFFaGRLQ29wS2ljc1hHNGdJQ0FnSjBzbk9pQW5ReWhEUTA0cFEwTW9LaWtxSnl4Y2JpQWdJQ0FuVWljNklDY3FXME5BU0Ywb1EwTkRUa01vUFU0cFF5a3FKeXhjYmlBZ0lDQW5TQ2M2SUNkRE1UMURLRTVEUFU0eEtVTkRLQ29wS2ljc1hHNGdJQ0FnSjBNbk9pQW5ReWhiUTBCQVNGMG9LaWtxS1ZNbkxGeHVJQ0FnSUNkV0p6b2dKME5ES0VNcFF5Z3FLU29uTEZ4dUlDQWdJQ2RRSnpvZ0owTXhRME5PS0NvcFF6RXFKeXhjYmlBZ0lDQW5WeWM2SUNjcVcwTkFRRWhkS0VOak1XTXlZMk5qWTJNeWJpaGJTRjBwWXpFcEtpY3NYRzRnSUNBZ0owa25PaUFuUTBOYlEwQklYU2hES1Z0RFFFaGRLQ29wS2ljc1hHNGdJQ0FnSjAwbk9pQW5RMU5EUTBNb0tpa3FKeXhjYmlBZ0lDQW5WQ2M2SUNkRFF5aFBLVU1vS2lrcUp5eGNiaUFnZlR0Y2JseHVJQ0F2S2lvZ1ZFOUVUem9nUm5Wc2JEOWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1FVRkdkV3hzVG1GdFpYTTZJRk4wY21sdVowUnBZM1JwYjI1aGNua2dQU0I3WEc0Z0lDQWdKMEZzWVNjNklDZEJKeXhjYmlBZ0lDQW5RWEpuSnpvZ0oxSW5MRnh1SUNBZ0lDZEJjMjRuT2lBblRpY3NYRzRnSUNBZ0owRnpjQ2M2SUNkRUp5eGNiaUFnSUNBblEzbHpKem9nSjBNbkxGeHVJQ0FnSUNkSGJHNG5PaUFuVVNjc1hHNGdJQ0FnSjBkc2RTYzZJQ2RGSnl4Y2JpQWdJQ0FuUjJ4NUp6b2dKMGNuTEZ4dUlDQWdJQ2RJYVhNbk9pQW5TQ2NzWEc0Z0lDQWdKMGxzWlNjNklDZEpKeXhjYmlBZ0lDQW5UR1YxSnpvZ0owd25MRnh1SUNBZ0lDZE1lWE1uT2lBblN5Y3NYRzRnSUNBZ0owMWxkQ2M2SUNkTkp5eGNiaUFnSUNBblVHaGxKem9nSjBZbkxGeHVJQ0FnSUNkUWNtOG5PaUFuVUNjc1hHNGdJQ0FnSjFObGNpYzZJQ2RUSnl4Y2JpQWdJQ0FuVkdoeUp6b2dKMVFuTEZ4dUlDQWdJQ2RVY25Bbk9pQW5WeWNzWEc0Z0lDQWdKMVI1Y2ljNklDZFpKeXhjYmlBZ0lDQW5WbUZzSnpvZ0oxWW5MRnh1SUNCOU8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwVUdGc1pYUjBaU2h6WTJobGJXVTZJSE4wY21sdVp5QTlJQ2RuY205ckp5azZJRk5sY1ZCaGJHVjBkR1VnZTF4dUlDQWdJSE4zYVhSamFDQW9jMk5vWlcxbEtTQjdYRzRnSUNBZ1kyRnpaU0FuWjNKdmF5YzZYRzRnSUNBZ0lDQnlaWFIxY200Z1FXMXBibTloWTJsa2MxQmhiR1YwZEdWekxrZHliMnRIY205MWNITTdYRzRnSUNBZ1kyRnpaU0FuYkdWemF5YzZYRzRnSUNBZ0lDQnlaWFIxY200Z1FXMXBibTloWTJsa2MxQmhiR1YwZEdWekxreGxjMnM3WEc0Z0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1EyaGxiVkJoYkdWMGRHVTZJSE5qYUdWdFpTQmNYR0FrZTNOamFHVnRaWDFjWEdBZ1pHOWxjeUJ1YjNRZ1pYaHBjM1JnS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1Y3lCa2FYWnBaR1ZrSUdGdGFXNXZJR0ZqYVdRZ2QybDBhQ0JwZEhNZ1kyOXVkR1Z1ZENCcGJpQjBhR1VnWW5KaFkydGxkQ3dnYVdZZ2RHaGxJR052Ym5SbGJuUWdhWE1nYm5WdFltVnlMQ0IwYUdWdUlHbDBjeUJ2YldsMGRHVmtYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JqSUhKaGR5QmhiV2x1YjF4dUlDQWdLaUJBY21WMGRYSnVJSHRiYzNSeWFXNW5MQ0J6ZEhKcGJtZGRmU0J2ZFhSbGNpQmhibVFnYVc1dVpYSWdZMjl1ZEdWdWRGeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUkpibTVsY2s5MWRHVnlLR002SUhOMGNtbHVaeWs2SUZ0emRISnBibWNzSUhOMGNtbHVaMTBnZTF4dUlDQWdJR3hsZENCcGMwbHVibVZ5SUQwZ01EdGNiaUFnSUNCc1pYUWdhVzV1WlhJZ1BTQW5KenRjYmlBZ0lDQnNaWFFnYjNWMFpYSWdQU0FuSnp0Y2JseHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ1kyaGhjaUJ2WmlCaktTQjdYRzRnSUNBZ0lDQnBaaUFvWTJoaGNpQTlQU0FuS0NjcFhHNGdJQ0FnSUNBZ0lHbHpTVzV1WlhJckt6dGNiaUFnSUNBZ0lHVnNjMlVnYVdZZ0tHTm9ZWElnUFQwZ0p5a25LVnh1SUNBZ0lDQWdJQ0JwYzBsdWJtVnlMUzA3WEc0Z0lDQWdJQ0JsYkhObElHbG1JQ2hwYzBsdWJtVnlLVnh1SUNBZ0lDQWdJQ0JwYm01bGNpQXJQU0JqYUdGeU8xeHVJQ0FnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdJQ0J2ZFhSbGNpQXJQU0JqYUdGeU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUFoYVhOT1lVNG9jR0Z5YzJWSmJuUW9hVzV1WlhJcEtTQS9JRnR2ZFhSbGNpd2dKeWRkSURvZ1cyOTFkR1Z5TENCcGJtNWxjbDA3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZEVOdmJHOXlRVUZRYVhadmRDaHRiMjV2YldWeU9pQnpkSEpwYm1jZ1BTQW5KeXdnYzJOb1pXMWxPaUFuWjNKdmF5Y2dQU0FuWjNKdmF5Y3BPaUJiYzNSeWFXNW5MQ0J6ZEhKcGJtY3NJSE4wY21sdVp5d2diblZ0WW1WeVhTQjdYRzRnSUNBZ0x5OWpiMjV6ZENCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObElEMGdRVUZRWVd4bGRIUmxjeTVIY205clIzSnZkWEJ6S0NrN1hHNGdJQ0FnWTI5dWMzUWdZMmhsYlZCaGJHVjBkR1ZKYm5OMFlXNWpaU0E5SUhSb2FYTXVaMlYwVUdGc1pYUjBaU2h6WTJobGJXVXBPMXh1SUNBZ0lHeGxkQ0JiYjNWMFpYSk5iMjV2YldWeUxDQnBibTVsY2sxdmJtOXRaWEpkSUQwZ2RHaHBjeTVuWlhSSmJtNWxjazkxZEdWeUtHMXZibTl0WlhJcE8xeHVJQ0FnSUc5MWRHVnlUVzl1YjIxbGNpQTlJQ2h2ZFhSbGNrMXZibTl0WlhJdWJHVnVaM1JvSUQ0Z05pQS9JR0FrZTI5MWRHVnlUVzl1YjIxbGNpNXpiR2xqWlNnd0xDQXpLWDB1TGk1Z0lEb2diM1YwWlhKTmIyNXZiV1Z5S1R0Y2JpQWdJQ0JwYm01bGNrMXZibTl0WlhJZ1BTQW9hVzV1WlhKTmIyNXZiV1Z5TG14bGJtZDBhQ0ErSURZZ1B5QmdKSHRwYm01bGNrMXZibTl0WlhJdWMyeHBZMlVvTUN3Z015bDlMaTR1WUNBNklHbHVibVZ5VFc5dWIyMWxjaWs3WEc1Y2JpQWdJQ0JwWmlBb2JXOXViMjFsY2k1c1pXNW5kR2dnUFQwZ01TQjhmQ0J0YjI1dmJXVnlXekZkSUQwOUlDY29KeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdZVzFwYm04Z1BTQnRiMjV2YldWeVd6QmRQeTUwYjFWd2NHVnlRMkZ6WlNncElUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCaGJXbHVieUJwYmlCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObElEOWNiaUFnSUNBZ0lDQWdXMk5vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlV1WjJWMEtHRnRhVzV2S1N3Z1lXMXBibThzSUdsdWJtVnlUVzl1YjIxbGNpd2dNVjBnT2x4dUlDQWdJQ0FnSUNCYmRHaHBjeTUxYm1SbFptbHVaV1JEYjJ4dmNpd2diM1YwWlhKTmIyNXZiV1Z5TENCcGJtNWxjazF2Ym05dFpYSXNJREZkTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNodGIyNXZiV1Z5V3pCZElEMDlJQ2RrSnlBbUppQnRiMjV2YldWeVd6RmRJU0JwYmlCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObEtTQjdYRzRnSUNBZ0lDQnBaaUFvYlc5dWIyMWxjaTVzWlc1bmRHZ2dQVDBnTWlCOGZDQnRiMjV2YldWeVd6SmRJRDA5SUNjb0p5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmhiV2x1YnlBOUlHMXZibTl0WlhKYk1WMC9MblJ2VlhCd1pYSkRZWE5sS0NraE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1lXMXBibThnYVc0Z1kyaGxiVkJoYkdWMGRHVkpibk4wWVc1alpTQS9YRzRnSUNBZ0lDQWdJQ0FnVzJOb1pXMVFZV3hsZEhSbFNXNXpkR0Z1WTJVdVoyVjBLR0Z0YVc1dktTd2dZVzFwYm04c0lHbHVibVZ5VFc5dWIyMWxjaXdnTWwwZ09seHVJQ0FnSUNBZ0lDQWdJRnQwYUdsekxuVnVaR1ZtYVc1bFpFTnZiRzl5TENCdmRYUmxjazF2Ym05dFpYSXNJR2x1Ym1WeVRXOXViMjFsY2l3Z01sMDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLRzF2Ym05dFpYSXVjM1ZpYzNSeWFXNW5LREFzSURNcElHbHVJSFJvYVhNdVFVRkdkV3hzVG1GdFpYTXBJSHRjYmlBZ0lDQWdJR2xtSUNodGIyNXZiV1Z5TG14bGJtZDBhQ0E5UFNBeklIeDhJRzF2Ym05dFpYSmJNMTBnUFQwZ0p5Z25LU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR0Z0YVc1dklEMGdkR2hwY3k1QlFVWjFiR3hPWVcxbGMxdHRiMjV2YldWeUxuTjFZbk4wY21sdVp5Z3dMQ0F6S1YwN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCaGJXbHVieUJwYmlCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObElEOWNiaUFnSUNBZ0lDQWdJQ0JiWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlM1blpYUW9ZVzFwYm04cExDQmhiV2x1Ynl3Z2FXNXVaWEpOYjI1dmJXVnlMQ0F6WFNBNlhHNGdJQ0FnSUNBZ0lDQWdXM1JvYVhNdWRXNWtaV1pwYm1Wa1EyOXNiM0lzSUc5MWRHVnlUVzl1YjIxbGNpd2dhVzV1WlhKTmIyNXZiV1Z5TENBelhUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9iVzl1YjIxbGNsc3dYVDh1ZEc5TWIzZGxja05oYzJVb0tTQTlQU0J0YjI1dmJXVnlXekJkS1NCN1hHNGdJQ0FnSUNCcFppQW9iVzl1YjIxbGNpNXpkV0p6ZEhKcGJtY29NU3dnTXlrZ2FXNGdkR2hwY3k1QlFVWjFiR3hPWVcxbGN5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2JXOXViMjFsY2k1c1pXNW5kR2dnUFQwZ05DQjhmQ0J0YjI1dmJXVnlXelJkSUQwOUlDY29KeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUdGdGFXNXZJRDBnZEdocGN5NUJRVVoxYkd4T1lXMWxjMXR0YjI1dmJXVnlMbk4xWW5OMGNtbHVaeWd4TENBektWMDdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR0Z0YVc1dklHbHVJR05vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlVnUDF4dUlDQWdJQ0FnSUNBZ0lDQWdXMk5vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlV1WjJWMEtHRnRhVzV2S1N3Z1lXMXBibThzSUdsdWJtVnlUVzl1YjIxbGNpd2dORjBnT2x4dUlDQWdJQ0FnSUNBZ0lDQWdXM1JvYVhNdWRXNWtaV1pwYm1Wa1EyOXNiM0lzSUc5MWRHVnlUVzl1YjIxbGNpd2dhVzV1WlhKTmIyNXZiV1Z5TENBMFhUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCYmRHaHBjeTUxYm1SbFptbHVaV1JEYjJ4dmNpd2diM1YwWlhKTmIyNXZiV1Z5TENCcGJtNWxjazF2Ym05dFpYSXNJREJkTzF4dUlDQjlYRzU5WEc0aVhYMD0iLCJpbXBvcnQgeyBTZXFQYWxldHRlQmFzZSB9IGZyb20gJy4vc2VxLXBhbGV0dGVzJztcbmV4cG9ydCBjbGFzcyBOdWNsZW90aWRlc1BhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgQ2hyb21hdG9ncmFtKCkge1xuICAgICAgICBpZiAodGhpcy5jaHJvbWF0b2dyYW0gPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgdGhpcy5jaHJvbWF0b2dyYW0gPSBuZXcgTnVjbGVvdGlkZXNQYWxldHRlcyh7XG4gICAgICAgICAgICAgICAgJ0EnOiAnZ3JlZW4nLFxuICAgICAgICAgICAgICAgICdDJzogJ2JsdWUnLFxuICAgICAgICAgICAgICAgICdHJzogJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICAnVCc6ICdyZWQnLFxuICAgICAgICAgICAgICAgICdVJzogJ3JlZCcsXG4gICAgICAgICAgICAgICAgJ290aGVycyc6ICdncmF5JyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNocm9tYXRvZ3JhbTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgTnVjbGVvdGlkZXMge1xufVxuTnVjbGVvdGlkZXMuU2VtVHlwZSA9ICdOdWNsZW90aWRlcyc7XG5OdWNsZW90aWRlcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQgPSAnTnVjbGVvdGlkZXNNdWx0aXBsZUFsaWdubWVudCc7XG5OdWNsZW90aWRlcy5OYW1lcyA9IHtcbiAgICAnQSc6ICdBZGVuaW5lJyxcbiAgICAnQyc6ICdDeXRvc2luZScsXG4gICAgJ0cnOiAnR3VhbmluZScsXG4gICAgJ1QnOiAnVGh5bWluZScsXG4gICAgJ1UnOiAnVXJhY2lsJyxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liblZqYkdWdmRHbGtaWE11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SnVkV05zWlc5MGFXUmxjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGTFFTeFBRVUZQTEVWQlFXRXNZMEZCWXl4RlFVRkRMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZGTVVRc1RVRkJUU3hQUVVGUExHMUNRVUZ2UWl4VFFVRlJMR05CUVdNN1NVRkhPVU1zVFVGQlRTeExRVUZMTEZsQlFWazdVVUZETlVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldTeExRVUZMTEV0QlFVc3NRMEZCUXl4RlFVRkZPMWxCUTJoRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NTVUZCU1N4dFFrRkJiVUlzUTBGQlF6dG5Ra0ZETVVNc1IwRkJSeXhGUVVGRkxFOUJRVTg3WjBKQlExb3NSMEZCUnl4RlFVRkZMRTFCUVUwN1owSkJRMWdzUjBGQlJ5eEZRVUZGTEU5QlFVODdaMEpCUTFvc1IwRkJSeXhGUVVGRkxFdEJRVXM3WjBKQlExWXNSMEZCUnl4RlFVRkZMRXRCUVVzN1owSkJRMVlzVVVGQlVTeEZRVUZGTEUxQlFVMDdZVUZEYWtJc1EwRkJReXhEUVVGRE8xTkJRMG83VVVGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1NVRkRNMElzUTBGQlF6dERRVU5HTzBGQlJVUXNUVUZCVFN4UFFVRlBMRmRCUVZjN08wRkJRMDRzYlVKQlFVOHNSMEZCVnl4aFFVRmhMRU5CUVVNN1FVRkZhRU1zYjBOQlFYZENMRWRCUVZjc09FSkJRVGhDTEVOQlFVTTdRVUZGY0VVc2FVSkJRVXNzUjBGQmNVSTdTVUZEZEVNc1IwRkJSeXhGUVVGRkxGTkJRVk03U1VGRFpDeEhRVUZITEVWQlFVVXNWVUZCVlR0SlFVTm1MRWRCUVVjc1JVRkJSU3hUUVVGVE8wbEJRMlFzUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1VVRkJVVHREUVVOa0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklIVnBJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzkxYVNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJFUnlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlpHY25PMXh1WEc1cGJYQnZjblFnZTFOMGNtbHVaMFJwWTNScGIyNWhjbmw5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN1UyVnhVR0ZzWlhSMFpTd2dVMlZ4VUdGc1pYUjBaVUpoYzJWOUlHWnliMjBnSnk0dmMyVnhMWEJoYkdWMGRHVnpKenRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRTUxWTJ4bGIzUnBaR1Z6VUdGc1pYUjBaWE1nWlhoMFpXNWtjeUJUWlhGUVlXeGxkSFJsUW1GelpTQjdYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR05vY205dFlYUnZaM0poYlRvZ1UyVnhVR0ZzWlhSMFpUdGNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZENCRGFISnZiV0YwYjJkeVlXMG9LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WTJoeWIyMWhkRzluY21GdElEMDlQU0IyYjJsa0lEQXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVkyaHliMjFoZEc5bmNtRnRJRDBnYm1WM0lFNTFZMnhsYjNScFpHVnpVR0ZzWlhSMFpYTW9lMXh1SUNBZ0lDQWdJQ0FuUVNjNklDZG5jbVZsYmljc1hHNGdJQ0FnSUNBZ0lDZERKem9nSjJKc2RXVW5MRnh1SUNBZ0lDQWdJQ0FuUnljNklDZGliR0ZqYXljc0lDOHZJRzl5WVc1blpTQS9YRzRnSUNBZ0lDQWdJQ2RVSnpvZ0ozSmxaQ2NzWEc0Z0lDQWdJQ0FnSUNkVkp6b2dKM0psWkNjc1hHNGdJQ0FnSUNBZ0lDZHZkR2hsY25Nbk9pQW5aM0poZVNjc1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyaHliMjFoZEc5bmNtRnRPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5Qk9kV05zWlc5MGFXUmxjeUI3WEc0Z0lITjBZWFJwWXlCeVpXRmtiMjVzZVNCVFpXMVVlWEJsT2lCemRISnBibWNnUFNBblRuVmpiR1Z2ZEdsa1pYTW5PMXh1WEc0Z0lITjBZWFJwWXlCeVpXRmtiMjVzZVNCVFpXMVVlWEJsVFhWc2RHbHdiR1ZCYkdsbmJtMWxiblE2SUhOMGNtbHVaeUE5SUNkT2RXTnNaVzkwYVdSbGMwMTFiSFJwY0d4bFFXeHBaMjV0Wlc1MEp6dGNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJRTVoYldWek9pQlRkSEpwYm1kRWFXTjBhVzl1WVhKNUlEMGdlMXh1SUNBZ0lDZEJKem9nSjBGa1pXNXBibVVuTEZ4dUlDQWdJQ2RESnpvZ0owTjVkRzl6YVc1bEp5eGNiaUFnSUNBblJ5YzZJQ2RIZFdGdWFXNWxKeXhjYmlBZ0lDQW5WQ2M2SUNkVWFIbHRhVzVsSnl4Y2JpQWdJQ0FuVlNjNklDZFZjbUZqYVd3bkxGeHVJQ0I5TzF4dWZWeHVJbDE5IiwiZXhwb3J0IGNsYXNzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBzdGF0aWMgbWFrZVBhbGV0dGUoZHQsIHNpbXBsaWZpZWQgPSBmYWxzZSwgUGFsZXR0ZVR5cGUgPSBTZXFQYWxldHRlQmFzZSkge1xuICAgICAgICBjb25zdCBwYWxldHRlID0ge307XG4gICAgICAgIGR0LmZvckVhY2goKGNwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvYmpMaXN0ID0gY3BbMF07XG4gICAgICAgICAgICBjb25zdCBjb2xvdXIgPSBjcFsxXTtcbiAgICAgICAgICAgIG9iakxpc3QuZm9yRWFjaCgob2JqLCBpbmQpID0+IHtcbiAgICAgICAgICAgICAgICBwYWxldHRlW29ial0gPSB0aGlzLmNvbG91clBhbGV0dGVbY29sb3VyXVtzaW1wbGlmaWVkID8gMCA6IGluZF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgUGFsZXR0ZVR5cGUocGFsZXR0ZSk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhbGV0dGUpIHtcbiAgICAgICAgdGhpcy5fcGFsZXR0ZSA9IHBhbGV0dGU7XG4gICAgfVxuICAgIGdldChtKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWxldHRlW21dO1xuICAgIH1cbn1cblNlcVBhbGV0dGVCYXNlLnVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuLyoqIFBhbGV0dGUgd2l0aCBzaGFkZXMgb2YgcHJpbWFyeSBjb2xvcnMgKi9cblNlcVBhbGV0dGVCYXNlLmNvbG91clBhbGV0dGUgPSB7XG4gICAgJ29yYW5nZSc6IFsncmdiKDI1NSwxODcsMTIwKScsICdyZ2IoMjQ1LDE2NywxMDApJywgJ3JnYigyMzUsMTM3LDcwKScsICdyZ2IoMjA1LCAxMTEsIDcxKSddLFxuICAgICdhbGxfZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYig3NCwxNjAsNzQpJywgJ3JnYigyMywxMDMsNTcpJywgJ3JnYigzMCwxMTAsOTYpJywgJ3JnYig2MCwxMzEsOTUpJyxcbiAgICAgICAgJ3JnYigyNCwxMTAsNzkpJywgJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDE4MiwgMjIzLCAxMzgpJywgJ3JnYigxNTIsIDE5MywgMTM4KSddLFxuICAgICdhbGxfYmx1ZSc6IFsncmdiKDMxLDExOSwxODApJywgJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTIyLCAxMDIsIDE4OSknLCAncmdiKDE1OCwyMTgsMjI5KScsICdyZ2IoMTQxLCAxMjQsIDIxNyknLFxuICAgICAgICAncmdiKDMxLCAxMjAsIDE1MCknXSxcbiAgICAnbWFnZW50YSc6IFsncmdiKDE2MiwxMDYsMTkyKScsICdyZ2IoMTk3LDE2NSwyMjQpJywgJ3JnYigyMDgsMTEzLDIxOCknXSxcbiAgICAncmVkJzogWydyZ2IoMjE0LDM5LDQwKScsICdyZ2IoMjU1LDE1MiwxNTApJ10sXG4gICAgJ3N0X2JsdWUnOiBbJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigzMSwxMTksMTgwKSddLFxuICAgICdkYXJrX2JsdWUnOiBbJ3JnYigzMSwxMTksMTgwKScsICdyZ2IoMzEsIDEyMCwgMTUwKSddLFxuICAgICdsaWdodF9ibHVlJzogWydyZ2IoMjMsMTkwLDIwNyknLCAncmdiKDE1OCwyMTgsMjI5KScsICdyZ2IoMTA4LCAyMTgsIDIyOSknLCAncmdiKDIzLDE5MCwyMjcpJ10sXG4gICAgJ2xpbGFjX2JsdWUnOiBbJ3JnYigxMjQsMTAyLDIxMSknLCAncmdiKDE0OSwxMzQsMjE3KScsICdyZ2IoOTcsIDgxLCAxNTApJ10sXG4gICAgJ2RhcmtfZ3JlZW4nOiBbJ3JnYigyMywxMDMsNTcpJywgJ3JnYigzMCwxMTAsOTYpJywgJ3JnYig2MCwxMzEsOTUpJywgJ3JnYigyNCwxMTAsNzkpJ10sXG4gICAgJ2dyZWVuJzogWydyZ2IoNDQsMTYwLDQ0KScsICdyZ2IoNzQsMTYwLDc0KSddLFxuICAgICdsaWdodF9ncmVlbic6IFsncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMTgyLCAyMjMsIDEzOCknLCAncmdiKDE1MiwgMTkzLCAxMzgpJ10sXG4gICAgJ3N0X2dyZWVuJzogWydyZ2IoNDQsMTYwLDQ0KScsICdyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigzOSwgMTc0LCA5NiknLCAncmdiKDc0LDE2MCw3NCknXSxcbiAgICAncGluayc6IFsncmdiKDI0NywxODIsMjEwKSddLFxuICAgICdicm93bic6IFsncmdiKDE0MCw4Niw3NSknLCAncmdiKDEwMiwgNjIsIDU0KSddLFxuICAgICdncmF5JzogWydyZ2IoMTI3LDEyNywxMjcpJywgJ3JnYigxOTksMTk5LDE5OSknLCAncmdiKDE5NiwxNTYsMTQ4KScsICdyZ2IoMjIyLCAyMjIsIDE4MCknXSxcbiAgICAneWVsbG93JzogWydyZ2IoMTg4LDE4OSwzNCknXSxcbiAgICAnd2hpdGUnOiBbJ3JnYigyMzAsMjMwLDIzMCknXSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlZ4TFhCaGJHVjBkR1Z6TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljMlZ4TFhCaGJHVjBkR1Z6TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFXbENRU3hOUVVGTkxFOUJRVThzWTBGQll6dEpRVEpDWml4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFVkJRWGRDTEVWQlEyNUVMRlZCUVZVc1IwRkJSeXhMUVVGTExFVkJRVVVzWTBGQmNVTXNZMEZCWXp0UlFVVjJSU3hOUVVGTkxFOUJRVThzUjBGQk9FSXNSVUZCUlN4RFFVRkRPMUZCUXpsRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSVHRaUVVOb1FpeE5RVUZOTEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGRFSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzSkNMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVN1owSkJRek5DTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOc1JTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTk1MRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMGdzVDBGQlR5eEpRVUZKTEZkQlFWY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOc1F5eERRVUZETzBsQlNVUXNXVUZCV1N4UFFVRm5RenRSUVVNeFF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRTlCUVU4c1EwRkJRenRKUVVNeFFpeERRVUZETzBsQlJVMHNSMEZCUnl4RFFVRkRMRU5CUVZNN1VVRkRiRUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRekZDTEVOQlFVTTdPMEZCYUVSaExEWkNRVUZqTEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU03UVVGRmJFUXNORU5CUVRSRE8wRkJRemxDTERSQ1FVRmhMRWRCUVdkRE8wbEJRM3BFTEZGQlFWRXNSVUZCUlN4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEd0Q1FVRnJRaXhGUVVGRkxHbENRVUZwUWl4RlFVRkZMRzFDUVVGdFFpeERRVUZETzBsQlF6RkdMRmRCUVZjc1JVRkJSU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMR2RDUVVGblFpeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxHZENRVUZuUWl4RlFVRkZMR2RDUVVGblFqdFJRVU53Unl4blFrRkJaMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN4dlFrRkJiMElzUTBGQlF6dEpRVU51Uml4VlFVRlZMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4cFFrRkJhVUlzUlVGQlJTeHZRa0ZCYjBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4dlFrRkJiMEk3VVVGREwwY3NiVUpCUVcxQ0xFTkJRVU03U1VGRGRFSXNVMEZCVXl4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRU5CUVVNN1NVRkRka1VzUzBGQlN5eEZRVUZGTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzYTBKQlFXdENMRU5CUVVNN1NVRkROME1zVTBGQlV5eEZRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2FVSkJRV2xDTEVOQlFVTTdTVUZEY2tVc1YwRkJWeXhGUVVGRkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTTdTVUZEY2tRc1dVRkJXU3hGUVVGRkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNiMEpCUVc5Q0xFVkJRVVVzYVVKQlFXbENMRU5CUVVNN1NVRkRPVVlzV1VGQldTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTTdTVUZETVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRU5CUVVNN1NVRkRkRVlzVDBGQlR5eEZRVUZGTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRU5CUVVNN1NVRkROME1zWVVGQllTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYjBKQlFXOUNMRVZCUVVVc2IwSkJRVzlDTEVOQlFVTTdTVUZETDBVc1ZVRkJWU3hGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzWjBKQlFXZENMRU5CUVVNN1NVRkRlRVlzVFVGQlRTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU03U1VGRE5VSXNUMEZCVHl4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU03U1VGREwwTXNUVUZCVFN4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2IwSkJRVzlDTEVOQlFVTTdTVUZETVVZc1VVRkJVU3hGUVVGRkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNN1NVRkROMElzVDBGQlR5eEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU03UTBGRE9VSXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR2R5YjJzZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyZHliMnNuTzF4dWFXMXdiM0owSUNvZ1lYTWdkV2tnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDNWcEp6dGNibWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1UyVnhVR0ZzWlhSMFpTQjdYRzRnSUM4dklGUm9aWEpsSUdGeVpTQjBiMjhnYlhWamFDQndjbTlpYkdWdElIZHBkR2dnYVc1a1pYaGxjaUJ3Y205d1pYSjBlU0JwYmlCMGVYQmxjMk55YVhCMExseHVJQ0F2THlBdktpcGNiaUFnTHk4Z0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHMGdUVzl1YjIxbGNpQmphR0Z5WVdOMFpYSmNiaUFnTHk4Z0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQkRiMnh2Y2x4dUlDQXZMeUFnS2k5Y2JpQWdMeThnVzIwNklITjBjbWx1WjEwNklITjBjbWx1Wnp0Y2JpQWdMeW9xSUUxdmJtOXRaWElnWTI5c2IzSmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUcwZ1RXOXViMjFsY2x4dUlDQWdLaTljYmlBZ1oyVjBLRzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaenRjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUZObGNWQmhiR1YwZEdWQ1lYTmxJR2x0Y0d4bGJXVnVkSE1nVTJWeFVHRnNaWFIwWlNCN1hHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ2RXNWtaV1pwYm1Wa1EyOXNiM0lnUFNBbmNtZGlLREV3TUN3eE1EQXNNVEF3S1NjN1hHNWNiaUFnTHlvcUlGQmhiR1YwZEdVZ2QybDBhQ0J6YUdGa1pYTWdiMllnY0hKcGJXRnllU0JqYjJ4dmNuTWdLaTljYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJqYjJ4dmRYSlFZV3hsZEhSbE9pQjdJRnRyWlhrNklITjBjbWx1WjEwNklITjBjbWx1WjF0ZElIMGdQU0I3WEc0Z0lDQWdKMjl5WVc1blpTYzZJRnNuY21kaUtESTFOU3d4T0Rjc01USXdLU2NzSUNkeVoySW9NalExTERFMk55d3hNREFwSnl3Z0ozSm5ZaWd5TXpVc01UTTNMRGN3S1Njc0lDZHlaMklvTWpBMUxDQXhNVEVzSURjeEtTZGRMRnh1SUNBZ0lDZGhiR3hmWjNKbFpXNG5PaUJiSjNKbllpZzBOQ3d4TmpBc05EUXBKeXdnSjNKbllpZzNOQ3d4TmpBc056UXBKeXdnSjNKbllpZ3lNeXd4TURNc05UY3BKeXdnSjNKbllpZ3pNQ3d4TVRBc09UWXBKeXdnSjNKbllpZzJNQ3d4TXpFc09UVXBKeXhjYmlBZ0lDQWdJQ2R5WjJJb01qUXNNVEV3TERjNUtTY3NJQ2R5WjJJb01UVXlMREl5TXl3eE16Z3BKeXdnSjNKbllpZ3hPRElzSURJeU15d2dNVE00S1Njc0lDZHlaMklvTVRVeUxDQXhPVE1zSURFek9Da25YU3hjYmlBZ0lDQW5ZV3hzWDJKc2RXVW5PaUJiSjNKbllpZ3pNU3d4TVRrc01UZ3dLU2NzSUNkeVoySW9Nak1zTVRrd0xESXdOeWtuTENBbmNtZGlLREV5TWl3Z01UQXlMQ0F4T0RrcEp5d2dKM0puWWlneE5UZ3NNakU0TERJeU9Ta25MQ0FuY21kaUtERTBNU3dnTVRJMExDQXlNVGNwSnl4Y2JpQWdJQ0FnSUNkeVoySW9NekVzSURFeU1Dd2dNVFV3S1NkZExGeHVJQ0FnSUNkdFlXZGxiblJoSnpvZ1d5ZHlaMklvTVRZeUxERXdOaXd4T1RJcEp5d2dKM0puWWlneE9UY3NNVFkxTERJeU5Da25MQ0FuY21kaUtESXdPQ3d4TVRNc01qRTRLU2RkTEZ4dUlDQWdJQ2R5WldRbk9pQmJKM0puWWlneU1UUXNNemtzTkRBcEp5d2dKM0puWWlneU5UVXNNVFV5TERFMU1Da25YU3hjYmlBZ0lDQW5jM1JmWW14MVpTYzZJRnNuY21kaUtESXpMREU1TUN3eU1EY3BKeXdnSjNKbllpZ3hOVGdzTWpFNExESXlPU2tuTENBbmNtZGlLRE14TERFeE9Td3hPREFwSjEwc1hHNGdJQ0FnSjJSaGNtdGZZbXgxWlNjNklGc25jbWRpS0RNeExERXhPU3d4T0RBcEp5d2dKM0puWWlnek1Td2dNVEl3TENBeE5UQXBKMTBzWEc0Z0lDQWdKMnhwWjJoMFgySnNkV1VuT2lCYkozSm5ZaWd5TXl3eE9UQXNNakEzS1Njc0lDZHlaMklvTVRVNExESXhPQ3d5TWprcEp5d2dKM0puWWlneE1EZ3NJREl4T0N3Z01qSTVLU2NzSUNkeVoySW9Nak1zTVRrd0xESXlOeWtuWFN4Y2JpQWdJQ0FuYkdsc1lXTmZZbXgxWlNjNklGc25jbWRpS0RFeU5Dd3hNRElzTWpFeEtTY3NJQ2R5WjJJb01UUTVMREV6TkN3eU1UY3BKeXdnSjNKbllpZzVOeXdnT0RFc0lERTFNQ2tuWFN4Y2JpQWdJQ0FuWkdGeWExOW5jbVZsYmljNklGc25jbWRpS0RJekxERXdNeXcxTnlrbkxDQW5jbWRpS0RNd0xERXhNQ3c1TmlrbkxDQW5jbWRpS0RZd0xERXpNU3c1TlNrbkxDQW5jbWRpS0RJMExERXhNQ3czT1NrblhTeGNiaUFnSUNBblozSmxaVzRuT2lCYkozSm5ZaWcwTkN3eE5qQXNORFFwSnl3Z0ozSm5ZaWczTkN3eE5qQXNOelFwSjEwc1hHNGdJQ0FnSjJ4cFoyaDBYMmR5WldWdUp6b2dXeWR5WjJJb01UVXlMREl5TXl3eE16Z3BKeXdnSjNKbllpZ3hPRElzSURJeU15d2dNVE00S1Njc0lDZHlaMklvTVRVeUxDQXhPVE1zSURFek9Da25YU3hjYmlBZ0lDQW5jM1JmWjNKbFpXNG5PaUJiSjNKbllpZzBOQ3d4TmpBc05EUXBKeXdnSjNKbllpZ3hOVElzTWpJekxERXpPQ2tuTENBbmNtZGlLRE01TENBeE56UXNJRGsyS1Njc0lDZHlaMklvTnpRc01UWXdMRGMwS1NkZExGeHVJQ0FnSUNkd2FXNXJKem9nV3lkeVoySW9NalEzTERFNE1pd3lNVEFwSjEwc1hHNGdJQ0FnSjJKeWIzZHVKem9nV3lkeVoySW9NVFF3TERnMkxEYzFLU2NzSUNkeVoySW9NVEF5TENBMk1pd2dOVFFwSjEwc1hHNGdJQ0FnSjJkeVlYa25PaUJiSjNKbllpZ3hNamNzTVRJM0xERXlOeWtuTENBbmNtZGlLREU1T1N3eE9Ua3NNVGs1S1Njc0lDZHlaMklvTVRrMkxERTFOaXd4TkRncEp5d2dKM0puWWlneU1qSXNJREl5TWl3Z01UZ3dLU2RkTEZ4dUlDQWdJQ2Q1Wld4c2IzY25PaUJiSjNKbllpZ3hPRGdzTVRnNUxETTBLU2RkTEZ4dUlDQWdJQ2QzYUdsMFpTYzZJRnNuY21kaUtESXpNQ3d5TXpBc01qTXdLU2RkTEZ4dUlDQjlPMXh1WEc0Z0lIQnliM1JsWTNSbFpDQnpkR0YwYVdNZ2JXRnJaVkJoYkdWMGRHVW9aSFE2SUZ0emRISnBibWRiWFN3Z2MzUnlhVzVuWFZ0ZExGeHVJQ0FnSUhOcGJYQnNhV1pwWldRZ1BTQm1ZV3h6WlN3Z1VHRnNaWFIwWlZSNWNHVTZJSFI1Y0dWdlppQlRaWEZRWVd4bGRIUmxRbUZ6WlNBOUlGTmxjVkJoYkdWMGRHVkNZWE5sWEc0Z0lDa2dlMXh1SUNBZ0lHTnZibk4wSUhCaGJHVjBkR1U2SUhzZ1cydGxlVG9nYzNSeWFXNW5YVG9nYzNSeWFXNW5JSDBnUFNCN2ZUdGNiaUFnSUNCa2RDNW1iM0pGWVdOb0tDaGpjQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYjJKcVRHbHpkQ0E5SUdOd1d6QmRPMXh1SUNBZ0lDQWdZMjl1YzNRZ1kyOXNiM1Z5SUQwZ1kzQmJNVjA3WEc0Z0lDQWdJQ0J2WW1wTWFYTjBMbVp2Y2tWaFkyZ29LRzlpYWl3Z2FXNWtLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lIQmhiR1YwZEdWYmIySnFYU0E5SUhSb2FYTXVZMjlzYjNWeVVHRnNaWFIwWlZ0amIyeHZkWEpkVzNOcGJYQnNhV1pwWldRZ1B5QXdJRG9nYVc1a1hUdGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lIMHBPMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dVR0ZzWlhSMFpWUjVjR1VvY0dGc1pYUjBaU2s3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUhKbFlXUnZibXg1SUY5d1lXeGxkSFJsT2lCN0lGdHRPaUJ6ZEhKcGJtZGRPaUJ6ZEhKcGJtY2dmVHRjYmx4dUlDQmpiMjV6ZEhKMVkzUnZjaWh3WVd4bGRIUmxPaUI3SUZ0dE9pQnpkSEpwYm1kZE9pQnpkSEpwYm1jZ2ZTa2dlMXh1SUNBZ0lIUm9hWE11WDNCaGJHVjBkR1VnUFNCd1lXeGxkSFJsTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDaHRPaUJ6ZEhKcGJtY3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDl3WVd4bGRIUmxXMjFkTzF4dUlDQjlYRzU5WEc0aVhYMD0iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuLyoqIG1ha2VzIHRoZSBjb2xvciBsZXNzIHdoaXRlLCBtYWtlcyB0aGUgdHJhbnNwYXJlbmN5IGVmZmVjdCBhbHdheXMgcGVyY2VwdGlibGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvciB4IGNvb3JkaW5hdGUuXG4gKiAqL1xuZnVuY3Rpb24gY29ycmVjdENvbG9yKGNvbG9yKSB7XG4gICAgaWYgKGNvbG9yID09IG51bGwpXG4gICAgICAgIHJldHVybiAncmdiKDEwMCwxMDAsMTAwKSc7XG4gICAgY29uc3QgZGdDb2xvciA9IERHLkNvbG9yLmZyb21IdG1sKGNvbG9yKTtcbiAgICBjb25zdCBnID0gREcuQ29sb3IuZyhkZ0NvbG9yKTtcbiAgICBjb25zdCByID0gREcuQ29sb3IucihkZ0NvbG9yKTtcbiAgICBjb25zdCBiID0gREcuQ29sb3IuYihkZ0NvbG9yKTtcbiAgICAvLyBjYWxjdWxhdGUgZXVjbGlkZWFuIGRpc3RhbmNlIHRvIHdoaXRlXG4gICAgY29uc3QgZGlzdFRvQmxhY2sgPSBNYXRoLnNxcnQoTWF0aC5wb3coMCAtIHIsIDIpICsgTWF0aC5wb3coMCAtIGcsIDIpICsgTWF0aC5wb3coMCAtIGIsIDIpKTtcbiAgICAvLyBub3JtYWxpemUgdmVjdG9yIHIgZyBiXG4gICAgY29uc3Qgbm9ybVIgPSByIC8gZGlzdFRvQmxhY2s7XG4gICAgY29uc3Qgbm9ybUcgPSBnIC8gZGlzdFRvQmxhY2s7XG4gICAgY29uc3Qgbm9ybUIgPSBiIC8gZGlzdFRvQmxhY2s7XG4gICAgaWYgKGRpc3RUb0JsYWNrID4gMjEwKSB7XG4gICAgICAgIHJldHVybiBgcmdiKCR7bm9ybVIgKiAyMTB9LCR7bm9ybUcgKiAyMTB9LCR7bm9ybUIgKiAyMTB9KWA7XG4gICAgfVxuICAgIHJldHVybiBERy5Db2xvci50b1JnYihkZ0NvbG9yKTtcbn1cbmV4cG9ydCBjbGFzcyBTdHJpbmdVdGlscyB7XG4gICAgc3RhdGljIGhhc2hDb2RlKHMpIHtcbiAgICAgICAgbGV0IGhhc2ggPSAwO1xuICAgICAgICBpZiAocy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4gaGFzaDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjaHIgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICBoYXNoID0gKChoYXNoIDw8IDUpIC0gaGFzaCkgKyBjaHI7XG4gICAgICAgICAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlclxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYXNoO1xuICAgIH1cbn1cbmltcG9ydCB7IFNlcVBhbGV0dGVCYXNlIH0gZnJvbSAnLi9zZXEtcGFsZXR0ZXMnO1xuZXhwb3J0IGNsYXNzIFVua25vd25TZXFQYWxldHRlIHtcbn1cbmV4cG9ydCBjbGFzcyBHcmF5QWxsUGFsZXR0ZSBleHRlbmRzIFVua25vd25TZXFQYWxldHRlIHtcbiAgICBnZXQobSkge1xuICAgICAgICByZXR1cm4gJyM2NjY2NjYnO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVbmtub3duQ29sb3JQYWxldHRlIGV4dGVuZHMgVW5rbm93blNlcVBhbGV0dGUge1xuICAgIHN0YXRpYyBidWlsZFBhbGV0dGUoKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdLmNvbmNhdCguLi5PYmplY3QudmFsdWVzKFNlcVBhbGV0dGVCYXNlLmNvbG91clBhbGV0dGUpKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgZ2V0KG0pIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IFN0cmluZ1V0aWxzLmhhc2hDb2RlKG0pO1xuICAgICAgICBjb25zdCBwSSA9IGhhc2ggJSBVbmtub3duQ29sb3JQYWxldHRlLnBhbGV0dGUubGVuZ3RoO1xuICAgICAgICByZXR1cm4gY29ycmVjdENvbG9yKFVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZVtwSV0pO1xuICAgIH1cbn1cblVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZSA9IFVua25vd25Db2xvclBhbGV0dGUuYnVpbGRQYWxldHRlKCk7XG5leHBvcnQgY2xhc3MgVW5rbm93blNlcVBhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgR3JheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JheSA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgdGhpcy5ncmF5ID0gbmV3IEdyYXlBbGxQYWxldHRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdyYXk7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgQ29sb3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbG9yID09PSB2b2lkIDApXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gbmV3IFVua25vd25Db2xvclBhbGV0dGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sb3I7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFc1cmJtOTNiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluVnVhMjV2ZDI0dWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJSVUVzVDBGQlR5eExRVUZMTEVWQlFVVXNUVUZCVFN4cFFrRkJhVUlzUTBGQlF6dEJRVVYwUXpzN1MwRkZTenRCUVVOTUxGTkJRVk1zV1VGQldTeERRVUZETEV0QlFXOUNPMGxCUTNoRExFbEJRVWtzUzBGQlN5eEpRVUZKTEVsQlFVazdVVUZEWml4UFFVRlBMR3RDUVVGclFpeERRVUZETzBsQlJUVkNMRTFCUVUwc1QwRkJUeXhIUVVGWExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wbEJRMnBFTEUxQlFVMHNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUXpsQ0xFMUJRVTBzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBsQlF6bENMRTFCUVUwc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRemxDTEhkRFFVRjNRenRKUVVONFF5eE5RVUZOTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkROVVlzZVVKQlFYbENPMGxCUTNwQ0xFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNSMEZCUnl4WFFVRlhMRU5CUVVNN1NVRkRPVUlzVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZCUXl4SFFVRkhMRmRCUVZjc1EwRkJRenRKUVVNNVFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRWRCUVVjc1YwRkJWeXhEUVVGRE8wbEJRemxDTEVsQlFVa3NWMEZCVnl4SFFVRkhMRWRCUVVjc1JVRkJSVHRSUVVOeVFpeFBRVUZQTEU5QlFVOHNTMEZCU3l4SFFVRkhMRWRCUVVjc1NVRkJTU3hMUVVGTExFZEJRVWNzUjBGQlJ5eEpRVUZKTEV0QlFVc3NSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJRenRMUVVNMVJEdEpRVU5FTEU5QlFVOHNSVUZCUlN4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdRVUZEYWtNc1EwRkJRenRCUVVWRUxFMUJRVTBzVDBGQlR5eFhRVUZYTzBsQlEyWXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGVE8xRkJRemxDTEVsQlFVa3NTVUZCU1N4SFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOeVFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJRenRaUVVOb1FpeFBRVUZQTEVsQlFVa3NRMEZCUXp0UlFVTmtMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVmNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlEzcERMRTFCUVUwc1IwRkJSeXhIUVVGWExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRjRU1zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRPMWxCUTJ4RExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl3eVFrRkJNa0k3VTBGRGRrTTdVVUZEUkN4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03UTBGRFJqdEJRVVZFTEU5QlFVOHNSVUZCWVN4alFVRmpMRVZCUVVNc1RVRkJUU3huUWtGQlowSXNRMEZCUXp0QlFVVXhSQ3hOUVVGTkxFOUJRV2RDTEdsQ1FVRnBRanREUVVWMFF6dEJRVVZFTEUxQlFVMHNUMEZCVHl4alFVRmxMRk5CUVZFc2FVSkJRV2xDTzBsQlF6VkRMRWRCUVVjc1EwRkJReXhEUVVGVE8xRkJRMnhDTEU5QlFVOHNVMEZCVXl4RFFVRkRPMGxCUTI1Q0xFTkJRVU03UTBGRFJqdEJRVWRFTEUxQlFVMHNUMEZCVHl4dFFrRkJiMElzVTBGQlVTeHBRa0ZCYVVJN1NVRkhhRVFzVFVGQlRTeERRVUZETEZsQlFWazdVVUZEZWtJc1RVRkJUU3hIUVVGSExFZEJRVWtzUlVGQlpTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zWTBGQll5eERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRjRVlzVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWWl4RFFVRkRPMGxCUlUwc1IwRkJSeXhEUVVGRExFTkJRVk03VVVGRGJFSXNUVUZCVFN4SlFVRkpMRWRCUVZjc1YwRkJWeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTNReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVkQlFVY3NiVUpCUVcxQ0xFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTnlSQ3hQUVVGUExGbEJRVmtzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhQUVVGUExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjJSQ3hEUVVGRE96dEJRVmhoTERKQ1FVRlBMRWRCUVdFc2JVSkJRVzFDTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNN1FVRmpka1VzVFVGQlRTeFBRVUZQTEd0Q1FVRnRRaXhUUVVGUkxHTkJRV003U1VGSE4wTXNUVUZCVFN4TFFVRkxMRWxCUVVrN1VVRkRjRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4TFFVRkxMRXRCUVVzc1EwRkJRenRaUVVOMFFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1kwRkJZeXhGUVVGRkxFTkJRVU03VVVGRGJrTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRMjVDTEVOQlFVTTdTVUZKVFN4TlFVRk5MRXRCUVVzc1MwRkJTenRSUVVOeVFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRXRCUVVzc1MwRkJTeXhEUVVGRE8xbEJRM1pDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3h0UWtGQmJVSXNSVUZCUlN4RFFVRkRPMUZCUTNwRExFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXp0SlFVTndRaXhEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklIVnBJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzkxYVNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJFUnlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlpHY25PMXh1WEc0dktpb2diV0ZyWlhNZ2RHaGxJR052Ykc5eUlHeGxjM01nZDJocGRHVXNJRzFoYTJWeklIUm9aU0IwY21GdWMzQmhjbVZ1WTNrZ1pXWm1aV04wSUdGc2QyRjVjeUJ3WlhKalpYQjBhV0pzWlZ4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHTnZiRzl5SUhnZ1kyOXZjbVJwYm1GMFpTNWNiaUFxSUNvdlhHNW1kVzVqZEdsdmJpQmpiM0p5WldOMFEyOXNiM0lvWTI5c2IzSTZJSE4wY21sdVp5QjhJRzUxYkd3cE9pQnpkSEpwYm1jZ2UxeHVJQ0JwWmlBb1kyOXNiM0lnUFQwZ2JuVnNiQ2xjYmlBZ0lDQnlaWFIxY200Z0ozSm5ZaWd4TURBc01UQXdMREV3TUNrbk8xeHVYRzRnSUdOdmJuTjBJR1JuUTI5c2IzSTZJRzUxYldKbGNpQTlJRVJITGtOdmJHOXlMbVp5YjIxSWRHMXNLR052Ykc5eUtUdGNiaUFnWTI5dWMzUWdaeUE5SUVSSExrTnZiRzl5TG1jb1pHZERiMnh2Y2lrN1hHNGdJR052Ym5OMElISWdQU0JFUnk1RGIyeHZjaTV5S0dSblEyOXNiM0lwTzF4dUlDQmpiMjV6ZENCaUlEMGdSRWN1UTI5c2IzSXVZaWhrWjBOdmJHOXlLVHRjYmlBZ0x5OGdZMkZzWTNWc1lYUmxJR1YxWTJ4cFpHVmhiaUJrYVhOMFlXNWpaU0IwYnlCM2FHbDBaVnh1SUNCamIyNXpkQ0JrYVhOMFZHOUNiR0ZqYXlBOUlFMWhkR2d1YzNGeWRDaE5ZWFJvTG5CdmR5Z3dJQzBnY2l3Z01pa2dLeUJOWVhSb0xuQnZkeWd3SUMwZ1p5d2dNaWtnS3lCTllYUm9MbkJ2ZHlnd0lDMGdZaXdnTWlrcE8xeHVJQ0F2THlCdWIzSnRZV3hwZW1VZ2RtVmpkRzl5SUhJZ1p5QmlYRzRnSUdOdmJuTjBJRzV2Y20xU0lEMGdjaUF2SUdScGMzUlViMEpzWVdOck8xeHVJQ0JqYjI1emRDQnViM0p0UnlBOUlHY2dMeUJrYVhOMFZHOUNiR0ZqYXp0Y2JpQWdZMjl1YzNRZ2JtOXliVUlnUFNCaUlDOGdaR2x6ZEZSdlFteGhZMnM3WEc0Z0lHbG1JQ2hrYVhOMFZHOUNiR0ZqYXlBK0lESXhNQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQmdjbWRpS0NSN2JtOXliVklnS2lBeU1UQjlMQ1I3Ym05eWJVY2dLaUF5TVRCOUxDUjdibTl5YlVJZ0tpQXlNVEI5S1dBN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUVSSExrTnZiRzl5TG5SdlVtZGlLR1JuUTI5c2IzSXBPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVTNSeWFXNW5WWFJwYkhNZ2UxeHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHaGhjMmhEYjJSbEtITTZJSE4wY21sdVp5azZJRzUxYldKbGNpQjdYRzRnSUNBZ2JHVjBJR2hoYzJnNklHNTFiV0psY2lBOUlEQTdYRzRnSUNBZ2FXWWdLSE11YkdWdVozUm9JRDA5UFNBd0tWeHVJQ0FnSUNBZ2NtVjBkWEp1SUdoaGMyZzdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FUb2diblZ0WW1WeUlEMGdNRHNnYVNBOElITXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR05vY2pvZ2JuVnRZbVZ5SUQwZ2N5NWphR0Z5UTI5a1pVRjBLR2twTzF4dUlDQWdJQ0FnYUdGemFDQTlJQ2dvYUdGemFDQThQQ0ExS1NBdElHaGhjMmdwSUNzZ1kyaHlPMXh1SUNBZ0lDQWdhR0Z6YUNCOFBTQXdPeUF2THlCRGIyNTJaWEowSUhSdklETXlZbWwwSUdsdWRHVm5aWEpjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdoaGMyZzdYRzRnSUgxY2JuMWNibHh1YVcxd2IzSjBJSHRUWlhGUVlXeGxkSFJsTENCVFpYRlFZV3hsZEhSbFFtRnpaWDBnWm5KdmJTQW5MaTl6WlhFdGNHRnNaWFIwWlhNbk8xeHVYRzVsZUhCdmNuUWdZV0p6ZEhKaFkzUWdZMnhoYzNNZ1ZXNXJibTkzYmxObGNWQmhiR1YwZEdVZ2FXMXdiR1Z0Wlc1MGN5QlRaWEZRWVd4bGRIUmxJSHRjYmlBZ2NIVmliR2xqSUdGaWMzUnlZV04wSUdkbGRDaHRPaUJ6ZEhKcGJtY3BPaUJ6ZEhKcGJtYzdYRzU5WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJIY21GNVFXeHNVR0ZzWlhSMFpTQmxlSFJsYm1SeklGVnVhMjV2ZDI1VFpYRlFZV3hsZEhSbElIdGNiaUFnY0hWaWJHbGpJR2RsZENodE9pQnpkSEpwYm1jcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUhKbGRIVnliaUFuSXpZMk5qWTJOaWM3WEc0Z0lIMWNibjFjYmx4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlNCbGVIUmxibVJ6SUZWdWEyNXZkMjVUWlhGUVlXeGxkSFJsSUh0Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCd1lXeGxkSFJsT2lCemRISnBibWRiWFNBOUlGVnVhMjV2ZDI1RGIyeHZjbEJoYkdWMGRHVXVZblZwYkdSUVlXeGxkSFJsS0NrN1hHNWNiaUFnY0hKcGRtRjBaU0J6ZEdGMGFXTWdZblZwYkdSUVlXeGxkSFJsS0NrNklITjBjbWx1WjF0ZElIdGNiaUFnSUNCamIyNXpkQ0J5WlhNZ1BTQW9XMTBnWVhNZ2MzUnlhVzVuVzEwcExtTnZibU5oZENndUxpNVBZbXBsWTNRdWRtRnNkV1Z6S0ZObGNWQmhiR1YwZEdWQ1lYTmxMbU52Ykc5MWNsQmhiR1YwZEdVcEtUdGNiaUFnSUNCeVpYUjFjbTRnY21Wek8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ2h0T2lCemRISnBibWNwT2lCemRISnBibWNnZTF4dUlDQWdJR052Ym5OMElHaGhjMmc2SUc1MWJXSmxjaUE5SUZOMGNtbHVaMVYwYVd4ekxtaGhjMmhEYjJSbEtHMHBPMXh1SUNBZ0lHTnZibk4wSUhCSklEMGdhR0Z6YUNBbElGVnVhMjV2ZDI1RGIyeHZjbEJoYkdWMGRHVXVjR0ZzWlhSMFpTNXNaVzVuZEdnN1hHNGdJQ0FnY21WMGRYSnVJR052Y25KbFkzUkRiMnh2Y2loVmJtdHViM2R1UTI5c2IzSlFZV3hsZEhSbExuQmhiR1YwZEdWYmNFbGRLVHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVnpJR1Y0ZEdWdVpITWdVMlZ4VUdGc1pYUjBaVUpoYzJVZ2UxeHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5Qm5jbUY1T2lCVFpYRlFZV3hsZEhSbE8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwSUVkeVlYa29LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WjNKaGVTQTlQVDBnZG05cFpDQXdLVnh1SUNBZ0lDQWdkR2hwY3k1bmNtRjVJRDBnYm1WM0lFZHlZWGxCYkd4UVlXeGxkSFJsS0NrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVozSmhlVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR052Ykc5eU9pQlRaWEZRWVd4bGRIUmxPMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMElFTnZiRzl5S0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtTnZiRzl5SUQwOVBTQjJiMmxrSURBcFhHNGdJQ0FnSUNCMGFHbHpMbU52Ykc5eUlEMGdibVYzSUZWdWEyNXZkMjVEYjJ4dmNsQmhiR1YwZEdVb0tUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiMnh2Y2p0Y2JpQWdmVnh1ZlZ4dUlsMTkiLCJpbXBvcnQgeyBtb25vbWVyVG9TaG9ydCB9IGZyb20gJy4vbWFjcm9tb2xlY3VsZSc7XG5jb25zdCB1bmRlZmluZWRDb2xvciA9ICdyZ2IoMTAwLDEwMCwxMDApJztcbmNvbnN0IGdyYXlDb2xvciA9ICcjODA4MDgwJztcbmNvbnN0IGJsYWNrQ29sb3IgPSAncmdiKDAsMCwwKSc7XG5jb25zdCBtb25vbWVyVG9TaG9ydEZ1bmN0aW9uID0gbW9ub21lclRvU2hvcnQ7XG5leHBvcnQgdmFyIERyYXdTdHlsZTtcbihmdW5jdGlvbiAoRHJhd1N0eWxlKSB7XG4gICAgRHJhd1N0eWxlW1wiTVNBXCJdID0gXCJNU0FcIjtcbiAgICBEcmF3U3R5bGVbXCJjbGFzc2ljXCJdID0gXCJjbGFzc2ljXCI7XG59KShEcmF3U3R5bGUgfHwgKERyYXdTdHlsZSA9IHt9KSk7XG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCBwcmludHMgYSBzdHJpbmcgYWxpZ25lZCB0byBsZWZ0IG9yIGNlbnRlcmVkLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB4IHggY29vcmRpbmF0ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB5IHkgY29vcmRpbmF0ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB3IFdpZHRoLlxuICogQHBhcmFtIHtudW1iZXJ9IGggSGVpZ2h0LlxuICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGcgQ2FudmFzIHJlbmRlcmluZyBjb250ZXh0LlxuICogQHBhcmFtIHtzdHJpbmd9IHMgU3RyaW5nIHRvIHByaW50LlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2xvcj11bmRlZmluZWRDb2xvcl0gU3RyaW5nIGNvbG9yLlxuICogQHBhcmFtIHtudW1iZXJ9IFtwaXZvdD0wXSBQaXJ2b3QuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtsZWZ0PWZhbHNlXSBJcyBsZWZ0IGFsaWduZWQuXG4gKiBAcGFyYW0ge251bWJlcn0gW3RyYW5zcGFyZW5jeVJhdGU9MC4wXSBUcmFuc3BhcmVuY3kgcmF0ZSB3aGVyZSAxLjAgaXMgZnVsbHkgdHJhbnNwYXJlbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc2VwYXJhdG9yPScnXSBJcyBzZXBhcmF0b3IgZm9yIHNlcXVlbmNlLlxuICogQHBhcmFtIHtib29sZWFufSBbbGFzdD1mYWxzZV0gSXMgY2hlY2tlciBpZiBlbGVtZW50IGxhc3Qgb3Igbm90LlxuICogQHBhcmFtIGRyYXdTdHlsZSBJcyBkcmF3IHN0eWxlLiBNU0EgLSBmb3IgbXVsdGljaGFyU2VxLCBjbGFzc2ljIC0gZm9yIG90aGVyIHNlcS5cbiAqIEBwYXJhbSBtYXhXb3JkIElzIGFycmF5IG9mIG1heCB3b3JkcyBmb3IgZWFjaCBsaW5lLlxuICogQHBhcmFtIHdvcmRJZHggSXMgaW5kZXggb2Ygd29yZCB3ZSBjdXJyZW50bHkgZHJhdy5cbiAqIEBwYXJhbSBncmlkQ2VsbCBJcyBncmlkIGNlbGwuXG4gKiBAcGFyYW0gcmVmZXJlbmNlU2VxdWVuY2UgSXMgcmVmZXJlbmNlIHNlcXVlbmNlIGZvciBkaWZmIG1vZGUuXG4gKiBAcGFyYW0gbWF4TGVuZ3RoT2ZNb25vbWVyIElzIG1heCBsZW5ndGggb2YgbW9ub21lci5cbiAqIEByZXR1cm4ge251bWJlcn0geCBjb29yZGluYXRlIHRvIHN0YXJ0IHByaW50aW5nIGF0LlxuICovXG5leHBvcnQgY29uc3QgcHJpbnRMZWZ0T3JDZW50ZXJlZCA9ICh4LCB5LCB3LCBoLCBnLCBzLCBjb2xvciA9IHVuZGVmaW5lZENvbG9yLCBwaXZvdCA9IDAsIGxlZnQgPSBmYWxzZSwgdHJhbnNwYXJlbmN5UmF0ZSA9IDEuMCwgc2VwYXJhdG9yID0gJycsIGxhc3QgPSBmYWxzZSwgZHJhd1N0eWxlID0gRHJhd1N0eWxlLmNsYXNzaWMsIG1heFdvcmQgPSB7fSwgd29yZElkeCA9IDAsIGdyaWRDZWxsID0gbnVsbCwgcmVmZXJlbmNlU2VxdWVuY2UgPSBbXSwgbWF4TGVuZ3RoT2ZNb25vbWVyID0gbnVsbCkgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jO1xuICAgIGcudGV4dEFsaWduID0gJ3N0YXJ0JztcbiAgICBsZXQgY29sb3JQYXJ0ID0gcy5zdWJzdHJpbmcoMCk7XG4gICAgbGV0IGdyYXlQYXJ0ID0gbGFzdCA/ICcnIDogc2VwYXJhdG9yO1xuICAgIGlmIChkcmF3U3R5bGUgPT09IERyYXdTdHlsZS5NU0EpIHtcbiAgICAgICAgZ3JheVBhcnQgPSAnJztcbiAgICB9XG4gICAgbGV0IGNvbG9yQ29kZSA9IHRydWU7XG4gICAgbGV0IGNvbXBhcmVXaXRoQ3VycmVudCA9IHRydWU7XG4gICAgbGV0IGhpZ2hsaWdodERpZmZlcmVuY2UgPSAnZGlmZmVyZW5jZSc7XG4gICAgaWYgKChncmlkQ2VsbCAhPSBudWxsKSAmJiAoZ3JpZENlbGwuY2VsbC5jb2x1bW4gIT0gbnVsbCkpIHtcbiAgICAgICAgY29sb3JDb2RlID0gKF9hID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4udGVtcFsnY29sb3ItY29kZSddKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0cnVlO1xuICAgICAgICBjb21wYXJlV2l0aEN1cnJlbnQgPSAoX2IgPSBncmlkQ2VsbC5jZWxsLmNvbHVtbi50ZW1wWydjb21wYXJlLXdpdGgtY3VycmVudCddKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB0cnVlO1xuICAgICAgICBoaWdobGlnaHREaWZmZXJlbmNlID0gKF9jID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4udGVtcFsnaGlnaGxpZ2h0LWRpZmZlcmVuY2UnXSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJ2RpZmZlcmVuY2UnO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50TW9ub21lciA9IHJlZmVyZW5jZVNlcXVlbmNlW3dvcmRJZHhdO1xuICAgIGlmIChjb21wYXJlV2l0aEN1cnJlbnQgJiYgKHJlZmVyZW5jZVNlcXVlbmNlLmxlbmd0aCA+IDApICYmIChoaWdobGlnaHREaWZmZXJlbmNlID09PSAnZGlmZmVyZW5jZScpKSB7XG4gICAgICAgIHRyYW5zcGFyZW5jeVJhdGUgPSAoY29sb3JQYXJ0ID09IGN1cnJlbnRNb25vbWVyKSA/IDAuMyA6IHRyYW5zcGFyZW5jeVJhdGU7XG4gICAgfVxuICAgIGlmIChjb21wYXJlV2l0aEN1cnJlbnQgJiYgKHJlZmVyZW5jZVNlcXVlbmNlLmxlbmd0aCA+IDApICYmIChoaWdobGlnaHREaWZmZXJlbmNlID09PSAnZXF1YWwnKSkge1xuICAgICAgICB0cmFuc3BhcmVuY3lSYXRlID0gKGNvbG9yUGFydCAhPSBjdXJyZW50TW9ub21lcikgPyAwLjMgOiB0cmFuc3BhcmVuY3lSYXRlO1xuICAgIH1cbiAgICBpZiAobWF4TGVuZ3RoT2ZNb25vbWVyICE9IG51bGwpIHtcbiAgICAgICAgY29sb3JQYXJ0ID0gbW9ub21lclRvU2hvcnRGdW5jdGlvbihjb2xvclBhcnQsIG1heExlbmd0aE9mTW9ub21lcik7XG4gICAgfVxuICAgIGxldCB0ZXh0U2l6ZSA9IGcubWVhc3VyZVRleHQoY29sb3JQYXJ0ICsgZ3JheVBhcnQpO1xuICAgIGNvbnN0IGluZGVudCA9IDU7XG4gICAgbGV0IG1heENvbG9yVGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KGNvbG9yUGFydCkud2lkdGg7XG4gICAgbGV0IGNvbG9yVGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KGNvbG9yUGFydCkud2lkdGg7XG4gICAgY29uc3QgZHkgPSBoIC8gMiAtICh0ZXh0U2l6ZS5mb250Qm91bmRpbmdCb3hBc2NlbnQgKyB0ZXh0U2l6ZS5mb250Qm91bmRpbmdCb3hEZXNjZW50KSAvIDIgKyAxO1xuICAgIHRleHRTaXplID0gdGV4dFNpemUud2lkdGg7XG4gICAgaWYgKGRyYXdTdHlsZSA9PT0gRHJhd1N0eWxlLk1TQSkge1xuICAgICAgICBtYXhDb2xvclRleHRTaXplID0gbWF4V29yZFt3b3JkSWR4XTtcbiAgICAgICAgdGV4dFNpemUgPSBtYXhXb3JkW3dvcmRJZHhdO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkcmF3KGR4MSwgZHgyKSB7XG4gICAgICAgIGNvbnN0IGRyYXdDb2xvciA9IGNvbG9yQ29kZSA/IGNvbG9yIDogYmxhY2tDb2xvcjtcbiAgICAgICAgZy5maWxsU3R5bGUgPSBkcmF3Q29sb3I7XG4gICAgICAgIGcuZ2xvYmFsQWxwaGEgPSB0cmFuc3BhcmVuY3lSYXRlO1xuICAgICAgICBpZiAoZHJhd1N0eWxlID09PSBEcmF3U3R5bGUuY2xhc3NpYykge1xuICAgICAgICAgICAgZy5maWxsVGV4dChjb2xvclBhcnQsIHggKyBkeDEsIHkgKyBkeSk7XG4gICAgICAgICAgICBnLmZpbGxTdHlsZSA9IGdyYXlDb2xvcjtcbiAgICAgICAgICAgIGcuZmlsbFRleHQoZ3JheVBhcnQsIHggKyBkeDIsIHkgKyBkeSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRyYXdTdHlsZSA9PT0gRHJhd1N0eWxlLk1TQSkge1xuICAgICAgICAgICAgZy5maWxsU3R5bGUgPSBkcmF3Q29sb3I7XG4gICAgICAgICAgICBnLmZpbGxUZXh0KGNvbG9yUGFydCwgeCArIGR4MSArICgobWF4V29yZFt3b3JkSWR4XSAtIGNvbG9yVGV4dFNpemUpIC8gMiksIHkgKyBkeSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxlZnQgfHwgdGV4dFNpemUgPiB3KSB7XG4gICAgICAgIGRyYXcoaW5kZW50LCBpbmRlbnQgKyBtYXhDb2xvclRleHRTaXplKTtcbiAgICAgICAgcmV0dXJuIHggKyBtYXhDb2xvclRleHRTaXplICsgZy5tZWFzdXJlVGV4dChncmF5UGFydCkud2lkdGg7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBkeCA9ICh3IC0gdGV4dFNpemUpIC8gMjtcbiAgICAgICAgZHJhdyhkeCwgZHggKyBtYXhDb2xvclRleHRTaXplKTtcbiAgICAgICAgcmV0dXJuIHggKyBkeCArIG1heENvbG9yVGV4dFNpemU7XG4gICAgfVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVkyVnNiQzF5Wlc1a1pYSmxjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkltTmxiR3d0Y21WdVpHVnlaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlJVRXNUMEZCVHl4RlFVRkRMR05CUVdNc1JVRkJReXhOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUlM5RExFMUJRVTBzWTBGQll5eEhRVUZITEd0Q1FVRnJRaXhEUVVGRE8wRkJRekZETEUxQlFVMHNVMEZCVXl4SFFVRkhMRk5CUVZNc1EwRkJRenRCUVVNMVFpeE5RVUZOTEZWQlFWVXNSMEZCUnl4WlFVRlpMRU5CUVVNN1FVRkRhRU1zVFVGQlRTeHpRa0ZCYzBJc1IwRkJNRVFzWTBGQll5eERRVUZETzBGQlJYSkhMRTFCUVUwc1EwRkJUaXhKUVVGWkxGTkJSMWc3UVVGSVJDeFhRVUZaTEZOQlFWTTdTVUZEYmtJc2QwSkJRVmNzUTBGQlFUdEpRVU5ZTEdkRFFVRnRRaXhEUVVGQk8wRkJRM0pDTEVOQlFVTXNSVUZJVnl4VFFVRlRMRXRCUVZRc1UwRkJVeXhSUVVkd1FqdEJRVVZFT3pzN096czdPenM3T3pzN096czdPenM3T3pzN08wZEJjMEpITzBGQlEwZ3NUVUZCVFN4RFFVRkRMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NRMEZEYWtNc1EwRkJVeXhGUVVGRkxFTkJRVk1zUlVGQlJTeERRVUZUTEVWQlFVVXNRMEZCVXl4RlFVTXhReXhEUVVFeVFpeEZRVUZGTEVOQlFWTXNSVUZCUlN4UlFVRm5RaXhqUVVGakxFVkJRM1JGTEZGQlFXZENMRU5CUVVNc1JVRkJSU3hKUVVGSkxFZEJRVWNzUzBGQlN5eEZRVUZGTEcxQ1FVRXlRaXhIUVVGSExFVkJReTlFTEZsQlFXOUNMRVZCUVVVc1JVRkJSU3hQUVVGblFpeExRVUZMTEVWQlFVVXNXVUZCZFVJc1UwRkJVeXhEUVVGRExFOUJRVThzUlVGQlJTeFZRVUYxUXl4RlFVRkZMRVZCUVVVc1ZVRkJhMElzUTBGQlF5eEZRVUZGTEZkQlFTdENMRWxCUVVrc1JVRkJSU3h2UWtGQk9FSXNSVUZCUlN4RlFVRkZMSEZDUVVGdlF5eEpRVUZKTEVWQlFWVXNSVUZCUlRzN1NVRkRjRklzUTBGQlF5eERRVUZETEZOQlFWTXNSMEZCUnl4UFFVRlBMRU5CUVVNN1NVRkRkRUlzU1VGQlNTeFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU12UWl4SlFVRkpMRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRE8wbEJRM0pETEVsQlFVa3NVMEZCVXl4TFFVRkxMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRVVU3VVVGREwwSXNVVUZCVVN4SFFVRkhMRVZCUVVVc1EwRkJRenRMUVVObU8wbEJRMFFzU1VGQlNTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRPMGxCUTNKQ0xFbEJRVWtzYTBKQlFXdENMRWRCUVVjc1NVRkJTU3hEUVVGRE8wbEJRemxDTEVsQlFVa3NiVUpCUVcxQ0xFZEJRVWNzV1VGQldTeERRVUZETzBsQlEzWkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNSVUZCUlR0UlFVTjRSQ3hUUVVGVExFZEJRVWNzVFVGQlFTeFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEcxRFFVRkpMRWxCUVVrc1EwRkJRenRSUVVNMVJDeHJRa0ZCYTBJc1IwRkJSeXhOUVVGQkxGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXh6UWtGQmMwSXNRMEZCUXl4dFEwRkJTU3hKUVVGSkxFTkJRVU03VVVGREwwVXNiVUpCUVcxQ0xFZEJRVWNzVFVGQlFTeFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zYzBKQlFYTkNMRU5CUVVNc2JVTkJRVWtzV1VGQldTeERRVUZETzB0QlJYcEdPMGxCUTBRc1RVRkJUU3hqUVVGakxFZEJRVmNzYVVKQlFXbENMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRE1VUXNTVUZCU1N4clFrRkJhMElzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeExRVUZMTEZsQlFWa3NRMEZCUXl4RlFVRkZPMUZCUTJ4SExHZENRVUZuUWl4SFFVRkhMRU5CUVVNc1UwRkJVeXhKUVVGSkxHTkJRV01zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRPMHRCUXpORk8wbEJRMFFzU1VGQlNTeHJRa0ZCYTBJc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEcxQ1FVRnRRaXhMUVVGTExFOUJRVThzUTBGQlF5eEZRVUZGTzFGQlF6ZEdMR2RDUVVGblFpeEhRVUZITEVOQlFVTXNVMEZCVXl4SlFVRkpMR05CUVdNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETzB0QlF6TkZPMGxCUTBRc1NVRkJTU3hyUWtGQmEwSXNTVUZCU1N4SlFVRkpMRVZCUVVVN1VVRkRPVUlzVTBGQlV5eEhRVUZITEhOQ1FVRnpRaXhEUVVGRExGTkJRVk1zUlVGQlJTeHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8wdEJRMjVGTzBsQlIwUXNTVUZCU1N4UlFVRlJMRWRCUVZFc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF5eFRRVUZUTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNN1NVRkRlRVFzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUldwQ0xFbEJRVWtzWjBKQlFXZENMRWRCUVVjc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNN1NVRkRkRVFzU1VGQlNTeGhRVUZoTEVkQlFVY3NRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTTdTVUZEYmtRc1RVRkJUU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXh4UWtGQmNVSXNSMEZCUnl4UlFVRlJMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRemxHTEZGQlFWRXNSMEZCUnl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRE8wbEJRekZDTEVsQlFVa3NVMEZCVXl4TFFVRkxMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRVVU3VVVGREwwSXNaMEpCUVdkQ0xFZEJRVWNzVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTNCRExGRkJRVkVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1MwRkROMEk3U1VGRlJDeFRRVUZUTEVsQlFVa3NRMEZCUXl4SFFVRlhMRVZCUVVVc1IwRkJWenRSUVVOd1F5eE5RVUZOTEZOQlFWTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRPMUZCUTJwRUxFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NVMEZCVXl4RFFVRkRPMUZCUTNoQ0xFTkJRVU1zUTBGQlF5eFhRVUZYTEVkQlFVY3NaMEpCUVdkQ0xFTkJRVU03VVVGRGFrTXNTVUZCU1N4VFFVRlRMRXRCUVVzc1UwRkJVeXhEUVVGRExFOUJRVThzUlVGQlJUdFpRVU51UXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFpRVU4yUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExGTkJRVk1zUTBGQlF6dFpRVU40UWl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFRRVU4yUXp0UlFVTkVMRWxCUVVrc1UwRkJVeXhMUVVGTExGTkJRVk1zUTBGQlF5eEhRVUZITEVWQlFVVTdXVUZETDBJc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eFRRVUZUTEVOQlFVTTdXVUZEZUVJc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMR0ZCUVdFc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJRenRUUVVOdVJqdEpRVU5JTEVOQlFVTTdTVUZGUkN4SlFVRkpMRWxCUVVrc1NVRkJTU3hSUVVGUkxFZEJRVWNzUTBGQlF5eEZRVUZGTzFGQlEzaENMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzVFVGQlRTeEhRVUZITEdkQ1FVRm5RaXhEUVVGRExFTkJRVU03VVVGRGVFTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1owSkJRV2RDTEVkQlFVY3NRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTTdTMEZGTjBRN1UwRkJUVHRSUVVOTUxFMUJRVTBzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU01UWl4SlFVRkpMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8xRkJRMmhETEU5QlFVOHNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhuUWtGQlowSXNRMEZCUXp0TFFVTnNRenRCUVVOSUxFTkJRVU1zUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1Y2JtbHRjRzl5ZENCN2JXOXViMjFsY2xSdlUyaHZjblI5SUdaeWIyMGdKeTR2YldGamNtOXRiMnhsWTNWc1pTYzdYRzVjYm1OdmJuTjBJSFZ1WkdWbWFXNWxaRU52Ykc5eUlEMGdKM0puWWlneE1EQXNNVEF3TERFd01Da25PMXh1WTI5dWMzUWdaM0poZVVOdmJHOXlJRDBnSnlNNE1EZ3dPREFuTzF4dVkyOXVjM1FnWW14aFkydERiMnh2Y2lBOUlDZHlaMklvTUN3d0xEQXBKenRjYm1OdmJuTjBJRzF2Ym05dFpYSlViMU5vYjNKMFJuVnVZM1JwYjI0NklDaGhiV2x1YnpvZ2MzUnlhVzVuTENCdFlYaE1aVzVuZEdoUFprMXZibTl0WlhJNklHNTFiV0psY2lrZ1BUNGdjM1J5YVc1bklEMGdiVzl1YjIxbGNsUnZVMmh2Y25RN1hHNWNibVY0Y0c5eWRDQmxiblZ0SUVSeVlYZFRkSGxzWlNCN1hHNGdJRTFUUVNBOUlDZE5VMEVuTEZ4dUlDQmpiR0Z6YzJsaklEMGdKMk5zWVhOemFXTW5MRnh1ZlZ4dVhHNHZLaXBjYmlBcUlFRWdablZ1WTNScGIyNGdkR2hoZENCd2NtbHVkSE1nWVNCemRISnBibWNnWVd4cFoyNWxaQ0IwYnlCc1pXWjBJRzl5SUdObGJuUmxjbVZrTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0I0SUhnZ1kyOXZjbVJwYm1GMFpTNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0I1SUhrZ1kyOXZjbVJwYm1GMFpTNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0IzSUZkcFpIUm9MbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdnZ1NHVnBaMmgwTGx4dUlDb2dRSEJoY21GdElIdERZVzUyWVhOU1pXNWtaWEpwYm1kRGIyNTBaWGgwTWtSOUlHY2dRMkZ1ZG1GeklISmxibVJsY21sdVp5QmpiMjUwWlhoMExseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSE1nVTNSeWFXNW5JSFJ2SUhCeWFXNTBMbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0amIyeHZjajExYm1SbFptbHVaV1JEYjJ4dmNsMGdVM1J5YVc1bklHTnZiRzl5TGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdHdhWFp2ZEQwd1hTQlFhWEoyYjNRdVhHNGdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJRnRzWldaMFBXWmhiSE5sWFNCSmN5QnNaV1owSUdGc2FXZHVaV1F1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1czUnlZVzV6Y0dGeVpXNWplVkpoZEdVOU1DNHdYU0JVY21GdWMzQmhjbVZ1WTNrZ2NtRjBaU0IzYUdWeVpTQXhMakFnYVhNZ1puVnNiSGtnZEhKaGJuTndZWEpsYm5SY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJjMlZ3WVhKaGRHOXlQU2NuWFNCSmN5QnpaWEJoY21GMGIzSWdabTl5SUhObGNYVmxibU5sTGx4dUlDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQmJiR0Z6ZEQxbVlXeHpaVjBnU1hNZ1kyaGxZMnRsY2lCcFppQmxiR1Z0Wlc1MElHeGhjM1FnYjNJZ2JtOTBMbHh1SUNvZ1FIQmhjbUZ0SUdSeVlYZFRkSGxzWlNCSmN5QmtjbUYzSUhOMGVXeGxMaUJOVTBFZ0xTQm1iM0lnYlhWc2RHbGphR0Z5VTJWeExDQmpiR0Z6YzJsaklDMGdabTl5SUc5MGFHVnlJSE5sY1M1Y2JpQXFJRUJ3WVhKaGJTQnRZWGhYYjNKa0lFbHpJR0Z5Y21GNUlHOW1JRzFoZUNCM2IzSmtjeUJtYjNJZ1pXRmphQ0JzYVc1bExseHVJQ29nUUhCaGNtRnRJSGR2Y21SSlpIZ2dTWE1nYVc1a1pYZ2diMllnZDI5eVpDQjNaU0JqZFhKeVpXNTBiSGtnWkhKaGR5NWNiaUFxSUVCd1lYSmhiU0JuY21sa1EyVnNiQ0JKY3lCbmNtbGtJR05sYkd3dVhHNGdLaUJBY0dGeVlXMGdjbVZtWlhKbGJtTmxVMlZ4ZFdWdVkyVWdTWE1nY21WbVpYSmxibU5sSUhObGNYVmxibU5sSUdadmNpQmthV1ptSUcxdlpHVXVYRzRnS2lCQWNHRnlZVzBnYldGNFRHVnVaM1JvVDJaTmIyNXZiV1Z5SUVseklHMWhlQ0JzWlc1bmRHZ2diMllnYlc5dWIyMWxjaTVjYmlBcUlFQnlaWFIxY200Z2UyNTFiV0psY24wZ2VDQmpiMjl5WkdsdVlYUmxJSFJ2SUhOMFlYSjBJSEJ5YVc1MGFXNW5JR0YwTGx4dUlDb3ZYRzVsZUhCdmNuUWdZMjl1YzNRZ2NISnBiblJNWldaMFQzSkRaVzUwWlhKbFpDQTlJQ2hjYmlBZ2VEb2diblZ0WW1WeUxDQjVPaUJ1ZFcxaVpYSXNJSGM2SUc1MWJXSmxjaXdnYURvZ2JuVnRZbVZ5TEZ4dUlDQm5PaUJEWVc1MllYTlNaVzVrWlhKcGJtZERiMjUwWlhoME1rUXNJSE02SUhOMGNtbHVaeXdnWTI5c2IzSTZJSE4wY21sdVp5QTlJSFZ1WkdWbWFXNWxaRU52Ykc5eUxGeHVJQ0J3YVhadmREb2diblZ0WW1WeUlEMGdNQ3dnYkdWbWRDQTlJR1poYkhObExDQjBjbUZ1YzNCaGNtVnVZM2xTWVhSbE9pQnVkVzFpWlhJZ1BTQXhMakFzWEc0Z0lITmxjR0Z5WVhSdmNqb2djM1J5YVc1bklEMGdKeWNzSUd4aGMzUTZJR0p2YjJ4bFlXNGdQU0JtWVd4elpTd2daSEpoZDFOMGVXeGxPaUJFY21GM1UzUjViR1VnUFNCRWNtRjNVM1I1YkdVdVkyeGhjM05wWXl3Z2JXRjRWMjl5WkRvZ2V5QmJhVzVrWlhnNklITjBjbWx1WjEwNklHNTFiV0psY2lCOUlEMGdlMzBzSUhkdmNtUkpaSGc2SUc1MWJXSmxjaUE5SURBc0lHZHlhV1JEWld4c09pQkVSeTVIY21sa1EyVnNiQ0I4SUc1MWJHd2dQU0J1ZFd4c0xDQnlaV1psY21WdVkyVlRaWEYxWlc1alpUb2djM1J5YVc1blcxMGdQU0JiWFN3Z2JXRjRUR1Z1WjNSb1QyWk5iMjV2YldWeU9pQnVkVzFpWlhJZ2ZDQnVkV3hzSUQwZ2JuVnNiQ2s2SUc1MWJXSmxjaUE5UGlCN1hHNGdJR2N1ZEdWNGRFRnNhV2R1SUQwZ0ozTjBZWEowSnp0Y2JpQWdiR1YwSUdOdmJHOXlVR0Z5ZENBOUlITXVjM1ZpYzNSeWFXNW5LREFwTzF4dUlDQnNaWFFnWjNKaGVWQmhjblFnUFNCc1lYTjBJRDhnSnljZ09pQnpaWEJoY21GMGIzSTdYRzRnSUdsbUlDaGtjbUYzVTNSNWJHVWdQVDA5SUVSeVlYZFRkSGxzWlM1TlUwRXBJSHRjYmlBZ0lDQm5jbUY1VUdGeWRDQTlJQ2NuTzF4dUlDQjlYRzRnSUd4bGRDQmpiMnh2Y2tOdlpHVWdQU0IwY25WbE8xeHVJQ0JzWlhRZ1kyOXRjR0Z5WlZkcGRHaERkWEp5Wlc1MElEMGdkSEoxWlR0Y2JpQWdiR1YwSUdocFoyaHNhV2RvZEVScFptWmxjbVZ1WTJVZ1BTQW5aR2xtWm1WeVpXNWpaU2M3WEc0Z0lHbG1JQ2dvWjNKcFpFTmxiR3dnSVQwZ2JuVnNiQ2tnSmlZZ0tHZHlhV1JEWld4c0xtTmxiR3d1WTI5c2RXMXVJQ0U5SUc1MWJHd3BLU0I3WEc0Z0lDQWdZMjlzYjNKRGIyUmxJRDBnWjNKcFpFTmxiR3d1WTJWc2JDNWpiMngxYlc0dWRHVnRjRnNuWTI5c2IzSXRZMjlrWlNkZElEOC9JSFJ5ZFdVN1hHNGdJQ0FnWTI5dGNHRnlaVmRwZEdoRGRYSnlaVzUwSUQwZ1ozSnBaRU5sYkd3dVkyVnNiQzVqYjJ4MWJXNHVkR1Z0Y0ZzblkyOXRjR0Z5WlMxM2FYUm9MV04xY25KbGJuUW5YU0EvUHlCMGNuVmxPMXh1SUNBZ0lHaHBaMmhzYVdkb2RFUnBabVpsY21WdVkyVWdQU0JuY21sa1EyVnNiQzVqWld4c0xtTnZiSFZ0Ymk1MFpXMXdXeWRvYVdkb2JHbG5hSFF0WkdsbVptVnlaVzVqWlNkZElEOC9JQ2RrYVdabVpYSmxibU5sSnp0Y2JseHVJQ0I5WEc0Z0lHTnZibk4wSUdOMWNuSmxiblJOYjI1dmJXVnlPaUJ6ZEhKcGJtY2dQU0J5WldabGNtVnVZMlZUWlhGMVpXNWpaVnQzYjNKa1NXUjRYVHRjYmlBZ2FXWWdLR052YlhCaGNtVlhhWFJvUTNWeWNtVnVkQ0FtSmlBb2NtVm1aWEpsYm1ObFUyVnhkV1Z1WTJVdWJHVnVaM1JvSUQ0Z01Da2dKaVlnS0docFoyaHNhV2RvZEVScFptWmxjbVZ1WTJVZ1BUMDlJQ2RrYVdabVpYSmxibU5sSnlrcElIdGNiaUFnSUNCMGNtRnVjM0JoY21WdVkzbFNZWFJsSUQwZ0tHTnZiRzl5VUdGeWRDQTlQU0JqZFhKeVpXNTBUVzl1YjIxbGNpa2dQeUF3TGpNZ09pQjBjbUZ1YzNCaGNtVnVZM2xTWVhSbE8xeHVJQ0I5WEc0Z0lHbG1JQ2hqYjIxd1lYSmxWMmwwYUVOMWNuSmxiblFnSmlZZ0tISmxabVZ5Wlc1alpWTmxjWFZsYm1ObExteGxibWQwYUNBK0lEQXBJQ1ltSUNob2FXZG9iR2xuYUhSRWFXWm1aWEpsYm1ObElEMDlQU0FuWlhGMVlXd25LU2tnZTF4dUlDQWdJSFJ5WVc1emNHRnlaVzVqZVZKaGRHVWdQU0FvWTI5c2IzSlFZWEowSUNFOUlHTjFjbkpsYm5STmIyNXZiV1Z5S1NBL0lEQXVNeUE2SUhSeVlXNXpjR0Z5Wlc1amVWSmhkR1U3WEc0Z0lIMWNiaUFnYVdZZ0tHMWhlRXhsYm1kMGFFOW1UVzl1YjIxbGNpQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ1kyOXNiM0pRWVhKMElEMGdiVzl1YjIxbGNsUnZVMmh2Y25SR2RXNWpkR2x2YmloamIyeHZjbEJoY25Rc0lHMWhlRXhsYm1kMGFFOW1UVzl1YjIxbGNpazdYRzRnSUgxY2JseHVYRzRnSUd4bGRDQjBaWGgwVTJsNlpUb2dZVzU1SUQwZ1p5NXRaV0Z6ZFhKbFZHVjRkQ2hqYjJ4dmNsQmhjblFnS3lCbmNtRjVVR0Z5ZENrN1hHNGdJR052Ym5OMElHbHVaR1Z1ZENBOUlEVTdYRzVjYmlBZ2JHVjBJRzFoZUVOdmJHOXlWR1Y0ZEZOcGVtVWdQU0JuTG0xbFlYTjFjbVZVWlhoMEtHTnZiRzl5VUdGeWRDa3VkMmxrZEdnN1hHNGdJR3hsZENCamIyeHZjbFJsZUhSVGFYcGxJRDBnWnk1dFpXRnpkWEpsVkdWNGRDaGpiMnh2Y2xCaGNuUXBMbmRwWkhSb08xeHVJQ0JqYjI1emRDQmtlU0E5SUdnZ0x5QXlJQzBnS0hSbGVIUlRhWHBsTG1admJuUkNiM1Z1WkdsdVowSnZlRUZ6WTJWdWRDQXJJSFJsZUhSVGFYcGxMbVp2Ym5SQ2IzVnVaR2x1WjBKdmVFUmxjMk5sYm5RcElDOGdNaUFySURFN1hHNGdJSFJsZUhSVGFYcGxJRDBnZEdWNGRGTnBlbVV1ZDJsa2RHZzdYRzRnSUdsbUlDaGtjbUYzVTNSNWJHVWdQVDA5SUVSeVlYZFRkSGxzWlM1TlUwRXBJSHRjYmlBZ0lDQnRZWGhEYjJ4dmNsUmxlSFJUYVhwbElEMGdiV0Y0VjI5eVpGdDNiM0prU1dSNFhUdGNiaUFnSUNCMFpYaDBVMmw2WlNBOUlHMWhlRmR2Y21SYmQyOXlaRWxrZUYwN1hHNGdJSDFjYmx4dUlDQm1kVzVqZEdsdmJpQmtjbUYzS0dSNE1Ub2diblZ0WW1WeUxDQmtlREk2SUc1MWJXSmxjaWs2SUhadmFXUWdlMXh1SUNBZ0lHTnZibk4wSUdSeVlYZERiMnh2Y2lBOUlHTnZiRzl5UTI5a1pTQS9JR052Ykc5eUlEb2dZbXhoWTJ0RGIyeHZjanRjYmlBZ0lDQm5MbVpwYkd4VGRIbHNaU0E5SUdSeVlYZERiMnh2Y2p0Y2JpQWdJQ0JuTG1kc2IySmhiRUZzY0doaElEMGdkSEpoYm5Od1lYSmxibU41VW1GMFpUdGNiaUFnSUNCcFppQW9aSEpoZDFOMGVXeGxJRDA5UFNCRWNtRjNVM1I1YkdVdVkyeGhjM05wWXlrZ2UxeHVJQ0FnSUNBZ1p5NW1hV3hzVkdWNGRDaGpiMnh2Y2xCaGNuUXNJSGdnS3lCa2VERXNJSGtnS3lCa2VTazdYRzRnSUNBZ0lDQm5MbVpwYkd4VGRIbHNaU0E5SUdkeVlYbERiMnh2Y2p0Y2JpQWdJQ0FnSUdjdVptbHNiRlJsZUhRb1ozSmhlVkJoY25Rc0lIZ2dLeUJrZURJc0lIa2dLeUJrZVNrN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoa2NtRjNVM1I1YkdVZ1BUMDlJRVJ5WVhkVGRIbHNaUzVOVTBFcElIdGNiaUFnSUNBZ0lHY3VabWxzYkZOMGVXeGxJRDBnWkhKaGQwTnZiRzl5TzF4dUlDQWdJQ0FnWnk1bWFXeHNWR1Y0ZENoamIyeHZjbEJoY25Rc0lIZ2dLeUJrZURFZ0t5QW9LRzFoZUZkdmNtUmJkMjl5WkVsa2VGMGdMU0JqYjJ4dmNsUmxlSFJUYVhwbEtTQXZJRElwTENCNUlDc2daSGtwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUdsbUlDaHNaV1owSUh4OElIUmxlSFJUYVhwbElENGdkeWtnZTF4dUlDQWdJR1J5WVhjb2FXNWtaVzUwTENCcGJtUmxiblFnS3lCdFlYaERiMnh2Y2xSbGVIUlRhWHBsS1R0Y2JpQWdJQ0J5WlhSMWNtNGdlQ0FySUcxaGVFTnZiRzl5VkdWNGRGTnBlbVVnS3lCbkxtMWxZWE4xY21WVVpYaDBLR2R5WVhsUVlYSjBLUzUzYVdSMGFEdGNibHh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJR052Ym5OMElHUjRJRDBnS0hjZ0xTQjBaWGgwVTJsNlpTa2dMeUF5TzF4dUlDQWdJR1J5WVhjb1pIZ3NJR1I0SUNzZ2JXRjRRMjlzYjNKVVpYaDBVMmw2WlNrN1hHNGdJQ0FnY21WMGRYSnVJSGdnS3lCa2VDQXJJRzFoZUVOdmJHOXlWR1Y0ZEZOcGVtVTdYRzRnSUgxY2JuMDdYRzVjYmlKZGZRPT0iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHd1IGZyb20gJ3d1JztcbmltcG9ydCB7IFZlY3RvciB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IHZlY3Rvckxlbmd0aCwgdmVjdG9yRG90UHJvZHVjdCB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmltcG9ydCB7IEFtaW5vYWNpZHNQYWxldHRlcyB9IGZyb20gJy4uL2FtaW5vYWNpZHMnO1xuaW1wb3J0IHsgTnVjbGVvdGlkZXNQYWxldHRlcyB9IGZyb20gJy4uL251Y2xlb3RpZGVzJztcbmltcG9ydCB7IFVua25vd25TZXFQYWxldHRlcyB9IGZyb20gJy4uL3Vua25vd24nO1xuaW1wb3J0IHsgVW5pdHNIYW5kbGVyIH0gZnJvbSAnLi4vdXRpbHMvdW5pdHMtaGFuZGxlcic7XG47XG4vKiogU3RhdHMgb2Ygc2VxdWVuY2VzIHdpdGggc3BlY2lmaWVkIHNwbGl0dGVyIGZ1bmMsIHJldHVybnMgeyBmcmVxLCBzYW1lTGVuZ3RoIH0uXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gc2VxQ29sXG4gKiBAcGFyYW0ge251bWJlcn0gbWluTGVuZ3RoXG4gKiBAcGFyYW0ge1NwbGl0dGVyRnVuY30gc3BsaXR0ZXJcbiAqIEByZXR1cm4geyBTZXFDb2xTdGF0cyB9LCBzYW1lTGVuZ3RoOiBib29sZWFuIH0gc3RhdHMgb2YgY29sdW1uIHNlcXVlbmNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHMoc2VxQ29sLCBtaW5MZW5ndGgsIHNwbGl0dGVyKSB7XG4gICAgY29uc3QgZnJlcSA9IHt9O1xuICAgIGxldCBzYW1lTGVuZ3RoID0gdHJ1ZTtcbiAgICBsZXQgZmlyc3RMZW5ndGggPSBudWxsO1xuICAgIGZvciAoY29uc3Qgc2VxIG9mIHNlcUNvbC5jYXRlZ29yaWVzKSB7XG4gICAgICAgIGNvbnN0IG1TZXEgPSBzcGxpdHRlcihzZXEpO1xuICAgICAgICBpZiAoZmlyc3RMZW5ndGggPT0gbnVsbClcbiAgICAgICAgICAgIGZpcnN0TGVuZ3RoID0gbVNlcS5sZW5ndGg7XG4gICAgICAgIGVsc2UgaWYgKG1TZXEubGVuZ3RoICE9PSBmaXJzdExlbmd0aClcbiAgICAgICAgICAgIHNhbWVMZW5ndGggPSBmYWxzZTtcbiAgICAgICAgaWYgKG1TZXEubGVuZ3RoID49IG1pbkxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBtIG9mIG1TZXEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIShtIGluIGZyZXEpKVxuICAgICAgICAgICAgICAgICAgICBmcmVxW21dID0gMDtcbiAgICAgICAgICAgICAgICBmcmVxW21dICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgZnJlcTogZnJlcSwgc2FtZUxlbmd0aDogc2FtZUxlbmd0aCB9O1xufVxuZXhwb3J0IGNvbnN0IG1vbm9tZXJSZSA9IC9cXFsoXFx3KylcXF18KFxcdyl8KC0pL2c7XG4vKiogU3BsaXQgc2VxdWVuY2UgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgbW9ub21lcnMsIHNxdWFyZSBicmFja2V0cyBtdWx0aWNoYXIgbW9ub21lciBuYW1lcyBvciBnYXAgc3ltYm9sLlxuICogQHBhcmFtIHthbnl9IHNlcSBvYmplY3Qgd2l0aCBzZXF1ZW5jZVxuICogQHJldHVybiB7c3RyaW5nW119IGFycmF5IG9mIG1vbm9tZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdHRlckFzRmFzdGEoc2VxKSB7XG4gICAgcmV0dXJuIHd1KHNlcS50b1N0cmluZygpLm1hdGNoQWxsKG1vbm9tZXJSZSkpXG4gICAgICAgIC5tYXAoKG1hKSA9PiB7XG4gICAgICAgIGxldCBtUmVzO1xuICAgICAgICBjb25zdCBtID0gbWFbMF07XG4gICAgICAgIGlmIChtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIG1SZXMgPSBtYVsxXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG1SZXMgPSBtO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtUmVzO1xuICAgIH0pLnRvQXJyYXkoKTtcbn1cbi8qKiBHZXRzIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZSBieSBzZXBhcmF0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3JcbiAqIEBwYXJhbSBsaW1pdFxuICogQHJldHVybiB7U3BsaXR0ZXJGdW5jfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvciwgbGltaXQgPSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gKHNlcSkgPT4ge1xuICAgICAgICByZXR1cm4gc2VxLnNwbGl0KHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH07XG59XG5jb25zdCBoZWxtUmUgPSAvKFBFUFRJREUxfEROQTF8Uk5BMSlcXHsoW159XSspfS9nO1xuY29uc3QgaGVsbVBwMVJlID0gL1xcWyhbXlxcW1xcXV0rKV0vZztcbi8qKiBTcGxpdHMgSGVsbSBzdHJpbmcgdG8gbW9ub21lcnMsIGJ1dCBkb2VzIG5vdCByZXBsYWNlIG1vbm9tZXIgbmFtZXMgdG8gb3RoZXIgbm90YXRpb24gKGUuZy4gZm9yIFJOQSkuXG4gKiBPbmx5IGZvciBsaW5lYXIgcG9seW1lcnMsIGRvZXMgbm90IHNwbGl0IFJOQSBmb3Igcmlib3NlIGFuZCBwaG9zcGhhdGUgbW9ub21lcnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VxIFNvdXJjZSBzdHJpbmcgb2YgSEVMTSBub3RhdGlvblxuICogQHJldHVybiB7c3RyaW5nW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdHRlckFzSGVsbShzZXEpIHtcbiAgICBoZWxtUmUubGFzdEluZGV4ID0gMDtcbiAgICBjb25zdCBlYSA9IGhlbG1SZS5leGVjKHNlcS50b1N0cmluZygpKTtcbiAgICBjb25zdCBpblNlcSA9IGVhID8gZWFbMl0gOiBudWxsO1xuICAgIGNvbnN0IG1tUG9zdFByb2Nlc3MgPSAobW0pID0+IHtcbiAgICAgICAgaGVsbVBwMVJlLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGNvbnN0IHBwMU0gPSBoZWxtUHAxUmUuZXhlYyhtbSk7XG4gICAgICAgIGlmIChwcDFNICYmIHBwMU0ubGVuZ3RoID49IDIpXG4gICAgICAgICAgICByZXR1cm4gcHAxTVsxXTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG1tO1xuICAgIH07XG4gICAgY29uc3QgbW1MaXN0ID0gaW5TZXEgPyBpblNlcS5zcGxpdCgnLicpIDogW107XG4gICAgcmV0dXJuIG1tTGlzdC5tYXAobW1Qb3N0UHJvY2Vzcyk7XG59XG4vKiogR2V0IHNwbGl0dGVyIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZXMgdG8gbW9ub21lcnNcbiAqIEBwYXJhbSB7c3RyaW5nfSB1bml0c1xuICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvclxuICogQHBhcmFtIGxpbWl0XG4gKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGxpdHRlcih1bml0cywgc2VwYXJhdG9yLCBsaW1pdCA9IHVuZGVmaW5lZCkge1xuICAgIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovKSlcbiAgICAgICAgcmV0dXJuIHNwbGl0dGVyQXNGYXN0YTtcbiAgICBlbHNlIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJzZXBhcmF0b3JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi8pKVxuICAgICAgICByZXR1cm4gZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvciwgbGltaXQpO1xuICAgIGVsc2UgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovKSlcbiAgICAgICAgcmV0dXJuIHNwbGl0dGVyQXNIZWxtO1xuICAgIGVsc2VcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHVuaXRzICR7dW5pdHN9IC5gKTtcbiAgICAvLyBUT0RPOiBTcGxpdHRlciBmb3IgSEVMTVxufVxuLyoqIEdlbmVyYXRlIHNwbGl0dGVyIGZ1bmN0aW9uIGZvciBzZXF1ZW5jZSBjb2x1bW5cbiAqIEBwYXJhbSB7REcuQ29sdW1ufSBjb2xcbiAqIEByZXR1cm4ge1NwbGl0dGVyRnVuY30gU3BsaXR0ZXIgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNwbGl0dGVyRm9yQ29sdW1uKGNvbCkge1xuICAgIGlmIChjb2wuc2VtVHlwZSAhPT0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEdldCBzcGxpdHRlciBmb3Igc2VtVHlwZSBcIiR7REcuU0VNVFlQRS5NQUNST01PTEVDVUxFfVwiIG9ubHkuYCk7XG4gICAgY29uc3QgdW5pdHMgPSBjb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IGNvbC5nZXRUYWcoXCJzZXBhcmF0b3JcIiAvKiBUQUdTLnNlcGFyYXRvciAqLyk7XG4gICAgcmV0dXJuIGdldFNwbGl0dGVyKHVuaXRzLCBzZXBhcmF0b3IpO1xufVxuY29uc3QgbG9uZ01vbm9tZXJQYXJ0UmUgPSAvKFxcdyspL2c7XG4vKiogQ29udmVydCBsb25nIG1vbm9tZXIgbmFtZXMgdG8gc2hvcnQgb25lcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vbm9tZXJUb1Nob3J0KGFtaW5vLCBtYXhMZW5ndGhPZk1vbm9tZXIpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHNob3J0QW1pbm9NYXRjaCA9IGFtaW5vLm1hdGNoKGxvbmdNb25vbWVyUGFydFJlKTtcbiAgICBjb25zdCBuZWVkQWRkRG90cyA9IGFtaW5vLmxlbmd0aCA+IG1heExlbmd0aE9mTW9ub21lciB8fCAoKF9hID0gc2hvcnRBbWlub01hdGNoID09PSBudWxsIHx8IHNob3J0QW1pbm9NYXRjaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2hvcnRBbWlub01hdGNoLmxlbmd0aCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMCkgPiAxO1xuICAgIGNvbnN0IHNob3J0QW1pbm8gPSAoX2IgPSBzaG9ydEFtaW5vTWF0Y2ggPT09IG51bGwgfHwgc2hvcnRBbWlub01hdGNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzaG9ydEFtaW5vTWF0Y2hbMF0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcgJztcbiAgICByZXR1cm4gIW5lZWRBZGREb3RzID8gc2hvcnRBbWlubyA6IHNob3J0QW1pbm8uc3Vic3RyaW5nKDAsIG1heExlbmd0aE9mTW9ub21lcikgKyAn4oCmJztcbn1cbi8qKiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFscGhhYmV0KGFscGhhYmV0KSB7XG4gICAgc3dpdGNoIChhbHBoYWJldCkge1xuICAgICAgICBjYXNlIFwiRE5BXCIgLyogQUxQSEFCRVQuRE5BICovOlxuICAgICAgICAgICAgcmV0dXJuIFVuaXRzSGFuZGxlci5EbmFGYXN0YUFscGhhYmV0O1xuICAgICAgICBjYXNlIFwiUk5BXCIgLyogQUxQSEFCRVQuUk5BICovOlxuICAgICAgICAgICAgcmV0dXJuIFVuaXRzSGFuZGxlci5SbmFGYXN0YUFscGhhYmV0O1xuICAgICAgICBjYXNlIFwiUFRcIiAvKiBBTFBIQUJFVC5QVCAqLzpcbiAgICAgICAgICAgIHJldHVybiBVbml0c0hhbmRsZXIuUGVwdGlkZUZhc3RhQWxwaGFiZXQ7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGFscGhhYmV0ICcke2FscGhhYmV0fScuYCk7XG4gICAgfVxufVxuLyoqIENhbGN1bGF0ZSBzaW1pbGFyaXR5IGluIGN1cnJlbnQgc2VxdWVuY2UgYW5kIGFscGhhYmV0LlxuICogQHBhcmFtIHtNb25vbWVyRnJlcXN9IGZyZXFcbiAqIEBwYXJhbSB7U2V0PHN0cmluZz59IGFscGhhYmV0XG4gKiBAcGFyYW0ge3N0cmluZ30gZ2FwU3ltYm9sXG4gKiBAcmV0dXJuIHtudW1iZXJ9IENvc2luZSBzaW1pbGFyaXR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbHBoYWJldFNpbWlsYXJpdHkoZnJlcSwgYWxwaGFiZXQsIGdhcFN5bWJvbCA9ICctJykge1xuICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0KFsuLi5uZXcgU2V0KE9iamVjdC5rZXlzKGZyZXEpKSwgLi4uYWxwaGFiZXRdKTtcbiAgICBrZXlzLmRlbGV0ZShnYXBTeW1ib2wpO1xuICAgIGNvbnN0IGZyZXFBID0gW107XG4gICAgY29uc3QgYWxwaGFiZXRBID0gW107XG4gICAgZm9yIChjb25zdCBtIG9mIGtleXMpIHtcbiAgICAgICAgZnJlcUEucHVzaChtIGluIGZyZXEgPyBmcmVxW21dIDogMCk7XG4gICAgICAgIGFscGhhYmV0QS5wdXNoKGFscGhhYmV0LmhhcyhtKSA/IDEgOiAwKTtcbiAgICB9XG4gICAgLyogVGhlcmUgd2VyZSBhIGZldyBpZGVhczogY2hpLXNxdWFyZWQsIHBlYXJzb24gY29ycmVsYXRpb24gKHZhcmlhbmNlPyksIHNjYWxhciBwcm9kdWN0ICovXG4gICAgY29uc3QgZnJlcVYgPSBuZXcgVmVjdG9yKGZyZXFBKTtcbiAgICBjb25zdCBhbHBoYWJldFYgPSBuZXcgVmVjdG9yKGFscGhhYmV0QSk7XG4gICAgcmV0dXJuIHZlY3RvckRvdFByb2R1Y3QoZnJlcVYsIGFscGhhYmV0VikgLyAodmVjdG9yTGVuZ3RoKGZyZXFWKSAqIHZlY3Rvckxlbmd0aChhbHBoYWJldFYpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RBbHBoYWJldChzdGF0cykge1xuICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlcyA9IFtcbiAgICAgICAgW1wiUFRcIiAvKiBBTFBIQUJFVC5QVCAqLywgVW5pdHNIYW5kbGVyLlBlcHRpZGVGYXN0YUFscGhhYmV0XSxcbiAgICAgICAgW1wiRE5BXCIgLyogQUxQSEFCRVQuRE5BICovLCBVbml0c0hhbmRsZXIuRG5hRmFzdGFBbHBoYWJldF0sXG4gICAgICAgIFtcIlJOQVwiIC8qIEFMUEhBQkVULlJOQSAqLywgVW5pdHNIYW5kbGVyLlJuYUZhc3RhQWxwaGFiZXRdLFxuICAgIF07XG4gICAgLy8gQ2FsY3VsYXRlIGxpa2VsaWhvb2RzIGZvciBhbHBoYWJldF9jYW5kaWRhdGVzXG4gICAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzU2ltID0gYWxwaGFiZXRDYW5kaWRhdGVzLm1hcCgoYykgPT4gZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KHN0YXRzLmZyZXEsIGNbMV0pKTtcbiAgICBjb25zdCBtYXhDb3MgPSBNYXRoLm1heCguLi5hbHBoYWJldENhbmRpZGF0ZXNTaW0pO1xuICAgIGNvbnN0IGFscGhhYmV0ID0gbWF4Q29zID4gMC42NSA/IGFscGhhYmV0Q2FuZGlkYXRlc1thbHBoYWJldENhbmRpZGF0ZXNTaW0uaW5kZXhPZihtYXhDb3MpXVswXSA6ICdVTic7XG4gICAgcmV0dXJuIGFscGhhYmV0O1xufVxuLyoqIFNlbGVjdHMgYSBzdWl0YWJsZSBwYWxldHRlIGJhc2VkIG9uIGNvbHVtbiBkYXRhXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gc2VxQ29sIENvbHVtbiB0byBsb29rIGZvciBhIHBhbGV0dGVcbiAqIEBwYXJhbSB7bnVtYmVyfSAgbWluTGVuZ3RoIG1pbmltdW0gbGVuZ3RoIG9mIHNlcXVlbmNlIHRvIGRldGVjdCBwYWxldHRlIChlbXB0eSBzdHJpbmdzIGFyZSBhbGxvd2VkKVxuICogQHJldHVybiB7U2VxUGFsZXR0ZX0gUGFsZXR0ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbHBoYWJldCBvZiB0aGUgc2VxdWVuY2VzIGluIHRoZSBjb2x1bW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2tVcFBhbGV0dGUoc2VxQ29sLCBtaW5MZW5ndGggPSA1KSB7XG4gICAgbGV0IGFscGhhYmV0O1xuICAgIGlmIChzZXFDb2wuc2VtVHlwZSA9PSBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEUpIHtcbiAgICAgICAgY29uc3QgdWggPSBuZXcgVW5pdHNIYW5kbGVyKHNlcUNvbCk7XG4gICAgICAgIGFscGhhYmV0ID0gdWguYWxwaGFiZXQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBzdGF0cyA9IGdldFN0YXRzKHNlcUNvbCwgbWluTGVuZ3RoLCBzcGxpdHRlckFzRmFzdGEpO1xuICAgICAgICBhbHBoYWJldCA9IGRldGVjdEFscGhhYmV0KHN0YXRzKTtcbiAgICB9XG4gICAgY29uc3QgcmVzID0gZ2V0UGFsZXR0ZUJ5VHlwZShhbHBoYWJldCk7XG4gICAgcmV0dXJuIHJlcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWxldHRlQnlUeXBlKHBhbGV0dGVUeXBlKSB7XG4gICAgc3dpdGNoIChwYWxldHRlVHlwZSkge1xuICAgICAgICBjYXNlICdQVCc6XG4gICAgICAgICAgICByZXR1cm4gQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gICAgICAgIGNhc2UgJ05UJzpcbiAgICAgICAgY2FzZSAnRE5BJzpcbiAgICAgICAgY2FzZSAnUk5BJzpcbiAgICAgICAgICAgIHJldHVybiBOdWNsZW90aWRlc1BhbGV0dGVzLkNocm9tYXRvZ3JhbTtcbiAgICAgICAgLy8gb3RoZXJcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBVbmtub3duU2VxUGFsZXR0ZXMuQ29sb3I7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHBpY2tVcFNlcUNvbChkZikge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBzZW1UeXBlQ29sTGlzdCA9IGRmLmNvbHVtbnMuYnlTZW1UeXBlQWxsKERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSk7XG4gICAgbGV0IHJlc0NvbCA9IChfYSA9IHNlbVR5cGVDb2xMaXN0LmZpbmQoKGNvbCkgPT4ge1xuICAgICAgICBjb25zdCB1bml0cyA9IGNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgIHJldHVybiB1bml0cyA/IHVuaXRzLmluZGV4T2YoJ01TQScpICE9PSAtMSA6IGZhbHNlO1xuICAgIH0pKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsO1xuICAgIGlmICghcmVzQ29sICYmIHNlbVR5cGVDb2xMaXN0Lmxlbmd0aCA+IDApXG4gICAgICAgIHJlc0NvbCA9IHNlbVR5cGVDb2xMaXN0WzBdO1xuICAgIHJldHVybiByZXNDb2w7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liV0ZqY205dGIyeGxZM1ZzWlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbTFoWTNKdmJXOXNaV04xYkdVdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJSVUVzVDBGQlR5eExRVUZMTEVWQlFVVXNUVUZCVFN4cFFrRkJhVUlzUTBGQlF6dEJRVU4wUXl4UFFVRlBMRVZCUVVVc1RVRkJUU3hKUVVGSkxFTkJRVU03UVVGRmNFSXNUMEZCVHl4RlFVRkRMRTFCUVUwc1JVRkJReXhOUVVGTkxHbEVRVUZwUkN4RFFVRkRPMEZCUTNaRkxFOUJRVThzUlVGQlF5eFpRVUZaTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVU1zVFVGQlRTeHBSRUZCYVVRc1EwRkJRenRCUVVVdlJpeFBRVUZQTEVWQlFXRXNhMEpCUVd0Q0xFVkJRVU1zVFVGQlRTeGxRVUZsTEVOQlFVTTdRVUZETjBRc1QwRkJUeXhGUVVGakxHMUNRVUZ0UWl4RlFVRkRMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZEYUVVc1QwRkJUeXhGUVVGRExHdENRVUZyUWl4RlFVRkRMRTFCUVUwc1dVRkJXU3hEUVVGRE8wRkJRemxETEU5QlFVOHNSVUZCUXl4WlFVRlpMRVZCUVVNc1RVRkJUU3gzUWtGQmQwSXNRMEZCUXp0QlFUUkNia1FzUTBGQlF6dEJRVTFHT3pzN096dEhRVXRITzBGQlEwZ3NUVUZCVFN4VlFVRlZMRkZCUVZFc1EwRkJReXhOUVVGcFFpeEZRVUZGTEZOQlFXbENMRVZCUVVVc1VVRkJjMEk3U1VGRGJrWXNUVUZCVFN4SlFVRkpMRWRCUVRSQ0xFVkJRVVVzUTBGQlF6dEpRVU42UXl4SlFVRkpMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU03U1VGRGRFSXNTVUZCU1N4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRE8wbEJSWFpDTEV0QlFVc3NUVUZCVFN4SFFVRkhMRWxCUVVrc1RVRkJUU3hEUVVGRExGVkJRVlVzUlVGQlJUdFJRVU51UXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGTTBJc1NVRkJTU3hYUVVGWExFbEJRVWtzU1VGQlNUdFpRVU55UWl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dGhRVU4yUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFdEJRVXNzVjBGQlZ6dFpRVU5zUXl4VlFVRlZMRWRCUVVjc1MwRkJTeXhEUVVGRE8xRkJSWEpDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hUUVVGVExFVkJRVVU3V1VGRE5VSXNTMEZCU3l4TlFVRk5MRU5CUVVNc1NVRkJTU3hKUVVGSkxFVkJRVVU3WjBKQlEzQkNMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTTdiMEpCUTJRc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRaQ3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMkZCUTJRN1UwRkRSanRMUVVOR08wbEJRMFFzVDBGQlR5eEZRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1ZVRkJWU3hGUVVGRkxGVkJRVlVzUlVGQlF5eERRVUZETzBGQlF6bERMRU5CUVVNN1FVRkZSQ3hOUVVGTkxFTkJRVU1zVFVGQlRTeFRRVUZUTEVkQlFWY3NjVUpCUVhGQ0xFTkJRVU03UVVGRmRrUTdPenRIUVVkSE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdWQlFXVXNRMEZCUXl4SFFVRlJPMGxCUTNSRExFOUJRVThzUlVGQlJTeERRVUZ0UWl4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMU5CUXpWRUxFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFXOUNMRVZCUVVVc1JVRkJSVHRSUVVNMVFpeEpRVUZKTEVsQlFWa3NRMEZCUXp0UlFVTnFRaXhOUVVGTkxFTkJRVU1zUjBGQlZ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRlRUlzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSVHRaUVVOb1FpeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMlE3WVVGQlRUdFpRVU5NTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRWanRSUVVORUxFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRGFrSXNRMEZCUXp0QlFVVkVPenM3TzBkQlNVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc2QwSkJRWGRDTEVOQlFVTXNVMEZCYVVJc1JVRkJSU3hSUVVFMFFpeFRRVUZUTzBsQlF5OUdMRTlCUVU4c1EwRkJReXhIUVVGWExFVkJRVVVzUlVGQlJUdFJRVU55UWl4UFFVRlBMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zVTBGQlV5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUTNKRExFTkJRVU1zUTBGQlF6dEJRVU5LTEVOQlFVTTdRVUZGUkN4TlFVRk5MRTFCUVUwc1IwRkJWeXhwUTBGQmFVTXNRMEZCUXp0QlFVTjZSQ3hOUVVGTkxGTkJRVk1zUjBGQlZ5eG5Ra0ZCWjBJc1EwRkJRenRCUVVVelF6czdPenRIUVVsSE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4SFFVRlJPMGxCUTNKRExFMUJRVTBzUTBGQlF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTNKQ0xFMUJRVTBzUlVGQlJTeEhRVUV5UWl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUXk5RUxFMUJRVTBzUzBGQlN5eEhRVUZyUWl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJSUzlETEUxQlFVMHNZVUZCWVN4SFFVRkhMRU5CUVVNc1JVRkJWU3hGUVVGVkxFVkJRVVU3VVVGRE0wTXNVMEZCVXl4RFFVRkRMRk5CUVZNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGVFSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTm9ReXhKUVVGSkxFbEJRVWtzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNN1dVRkRNVUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN08xbEJSV1lzVDBGQlR5eEZRVUZGTEVOQlFVTTdTVUZEWkN4RFFVRkRMRU5CUVVNN1NVRkZSaXhOUVVGTkxFMUJRVTBzUjBGQllTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVOMlJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU03UVVGRGJrTXNRMEZCUXp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hWUVVGVkxGZEJRVmNzUTBGQlF5eExRVUZoTEVWQlFVVXNVMEZCYVVJc1JVRkJSU3hSUVVFMFFpeFRRVUZUTzBsQlEycEhMRWxCUVVrc1MwRkJTeXhEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETEZWQlFWVXNPRUpCUVdkQ08xRkJRMmhFTEU5QlFVOHNaVUZCWlN4RFFVRkRPMU5CUTNCQ0xFbEJRVWtzUzBGQlN5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRlZCUVZVc2MwTkJRVzlDTzFGQlEzcEVMRTlCUVU4c2QwSkJRWGRDTEVOQlFVTXNVMEZCVXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xTkJReTlETEVsQlFVa3NTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGVkJRVlVzTkVKQlFXVTdVVUZEY0VRc1QwRkJUeXhqUVVGakxFTkJRVU03TzFGQlJYUkNMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zYjBKQlFXOUNMRXRCUVVzc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRmFrUXNNRUpCUVRCQ08wRkJRelZDTEVOQlFVTTdRVUZGUkRzN08wZEJSMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNiMEpCUVc5Q0xFTkJRVU1zUjBGQll6dEpRVU5xUkN4SlFVRkpMRWRCUVVjc1EwRkJReXhQUVVGUExFdEJRVXNzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4aFFVRmhPMUZCUXpGRExFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNOa0pCUVRaQ0xFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNZVUZCWVN4VFFVRlRMRU5CUVVNc1EwRkJRenRKUVVWc1JpeE5RVUZOTEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkRlRU1zVFVGQlRTeFRRVUZUTEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc2EwTkJRV2RDTEVOQlFVTTdTVUZETjBNc1QwRkJUeXhYUVVGWExFTkJRVU1zUzBGQlN5eEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMEZCUTNaRExFTkJRVU03UVVGRlJDeE5RVUZOTEdsQ1FVRnBRaXhIUVVGWExGRkJRVkVzUTBGQlF6dEJRVVV6UXl3clEwRkJLME03UVVGREwwTXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhMUVVGaExFVkJRVVVzYTBKQlFUQkNPenRKUVVOMFJTeE5RVUZOTEdWQlFXVXNSMEZCTkVJc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8wbEJRMmhHTEUxQlFVMHNWMEZCVnl4SFFVRlpMRXRCUVVzc1EwRkJReXhOUVVGTkxFZEJRVWNzYTBKQlFXdENMRWxCUVVrc1EwRkJReXhOUVVGQkxHVkJRV1VzWVVGQlppeGxRVUZsTEhWQ1FVRm1MR1ZCUVdVc1EwRkJSU3hOUVVGTkxHMURRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOeVJ5eE5RVUZOTEZWQlFWVXNSMEZCUnl4TlFVRkJMR1ZCUVdVc1lVRkJaaXhsUVVGbExIVkNRVUZtTEdWQlFXVXNRMEZCUnl4RFFVRkRMRU5CUVVNc2JVTkJRVWtzUjBGQlJ5eERRVUZETzBsQlF5OURMRTlCUVU4c1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdRVUZEZGtZc1EwRkJRenRCUVVWRUxFMUJRVTA3UVVGRFRpeE5RVUZOTEZWQlFWVXNWMEZCVnl4RFFVRkRMRkZCUVd0Q08wbEJRelZETEZGQlFWRXNVVUZCVVN4RlFVRkZPMUZCUTJ4Q08xbEJRMFVzVDBGQlR5eFpRVUZaTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU03VVVGRGRrTTdXVUZEUlN4UFFVRlBMRmxCUVZrc1EwRkJReXhuUWtGQlowSXNRMEZCUXp0UlFVTjJRenRaUVVORkxFOUJRVThzV1VGQldTeERRVUZETEc5Q1FVRnZRaXhEUVVGRE8xRkJRek5ETzFsQlEwVXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXg1UWtGQmVVSXNVVUZCVVN4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVONFJEdEJRVU5JTEVOQlFVTTdRVUZGUkRzN096czdSMEZMUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3h4UWtGQmNVSXNRMEZCUXl4SlFVRnJRaXhGUVVGRkxGRkJRWEZDTEVWQlFVVXNXVUZCYjBJc1IwRkJSenRKUVVOMFJ5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJVeXhEUVVGRExFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVNelJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wbEJSWFpDTEUxQlFVMHNTMEZCU3l4SFFVRmhMRVZCUVVVc1EwRkJRenRKUVVNelFpeE5RVUZOTEZOQlFWTXNSMEZCWVN4RlFVRkZMRU5CUVVNN1NVRkRMMElzUzBGQlN5eE5RVUZOTEVOQlFVTXNTVUZCU1N4SlFVRkpMRVZCUVVVN1VVRkRjRUlzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzQkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVONlF6dEpRVU5FTERCR1FVRXdSanRKUVVNeFJpeE5RVUZOTEV0QlFVc3NSMEZCVnl4SlFVRkpMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU40UXl4TlFVRk5MRk5CUVZNc1IwRkJWeXhKUVVGSkxFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0SlFVTm9SQ3hQUVVGUExHZENRVUZuUWl4RFFVRkRMRXRCUVVzc1JVRkJSU3hUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhaUVVGWkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTVSaXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4TFFVRnJRanRKUVVNdlF5eE5RVUZOTEd0Q1FVRnJRaXhIUVVFMFFqdFJRVU5zUkN4NVFrRkJZeXhaUVVGWkxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNN1VVRkRhRVFzTWtKQlFXVXNXVUZCV1N4RFFVRkRMR2RDUVVGblFpeERRVUZETzFGQlF6ZERMREpDUVVGbExGbEJRVmtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJRenRMUVVNNVF5eERRVUZETzBsQlJVWXNaMFJCUVdkRU8wbEJRMmhFTEUxQlFVMHNjVUpCUVhGQ0xFZEJRV0VzYTBKQlFXdENMRU5CUVVNc1IwRkJSeXhEUVVNMVJDeERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTJ4RUxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXh4UWtGQmNVSXNRMEZCUXl4RFFVRkRPMGxCUTJ4RUxFMUJRVTBzVVVGQlVTeEhRVUZITEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExHdENRVUZyUWl4RFFVRkRMSEZDUVVGeFFpeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1NVRkRja2NzVDBGQlR5eFJRVUZSTEVOQlFVTTdRVUZEYkVJc1EwRkJRenRCUVVWRU96czdPMGRCU1VjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzWVVGQllTeERRVUZETEUxQlFXbENMRVZCUVVVc1dVRkJiMElzUTBGQlF6dEpRVU53UlN4SlFVRkpMRkZCUVdkQ0xFTkJRVU03U1VGRGNrSXNTVUZCU1N4TlFVRk5MRU5CUVVNc1QwRkJUeXhKUVVGSkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RlFVRkZPMUZCUXpsRExFMUJRVTBzUlVGQlJTeEhRVUZwUWl4SlFVRkpMRmxCUVZrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU5zUkN4UlFVRlJMRWRCUVVjc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF6dExRVU40UWp0VFFVRk5PMUZCUTB3c1RVRkJUU3hMUVVGTExFZEJRV2RDTEZGQlFWRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1UwRkJVeXhGUVVGRkxHVkJRV1VzUTBGQlF5eERRVUZETzFGQlEzaEZMRkZCUVZFc1IwRkJSeXhqUVVGakxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdTMEZEYkVNN1NVRkZSQ3hOUVVGTkxFZEJRVWNzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEpRVU4yUXl4UFFVRlBMRWRCUVVjc1EwRkJRenRCUVVOaUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zVjBGQmJVSTdTVUZEYkVRc1VVRkJVU3hYUVVGWExFVkJRVVU3VVVGRGNrSXNTMEZCU3l4SlFVRkpPMWxCUTFBc1QwRkJUeXhyUWtGQmEwSXNRMEZCUXl4VlFVRlZMRU5CUVVNN1VVRkRka01zUzBGQlN5eEpRVUZKTEVOQlFVTTdVVUZEVml4TFFVRkxMRXRCUVVzc1EwRkJRenRSUVVOWUxFdEJRVXNzUzBGQlN6dFpRVU5TTEU5QlFVOHNiVUpCUVcxQ0xFTkJRVU1zV1VGQldTeERRVUZETzFGQlEzaERMRkZCUVZFN1VVRkRWanRaUVVORkxFOUJRVThzYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhEUVVGRE8wdEJRMnBETzBGQlEwZ3NRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3haUVVGWkxFTkJRVU1zUlVGQlowSTdPMGxCUXpORExFMUJRVTBzWTBGQll5eEhRVUZITEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNN1NVRkRla1VzU1VGQlNTeE5RVUZOTEVkQlFYRkNMRTFCUVVFc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZPMUZCUTNwRUxFMUJRVTBzUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVTjRReXhQUVVGUExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRE8wbEJRM0pFTEVOQlFVTXNRMEZCUXl4dFEwRkJTU3hKUVVGSkxFTkJRVU03U1VGRFdDeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMR05CUVdNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF6dFJRVU4wUXl4TlFVRk5MRWRCUVVjc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6ZENMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdLaUJoY3lCbmNtOXJJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzluY205ckp6dGNibWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnS2lCaGN5QkVSeUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2Wkdjbk8xeHVhVzF3YjNKMElIZDFJR1p5YjIwZ0ozZDFKenRjYmx4dWFXMXdiM0owSUh0V1pXTjBiM0o5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN2RtVmpkRzl5VEdWdVozUm9MQ0IyWldOMGIzSkViM1JRY205a2RXTjBmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkyWldOMGIzSXRiM0JsY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTFObGNWQmhiR1YwZEdWOUlHWnliMjBnSnk0dUwzTmxjUzF3WVd4bGRIUmxjeWM3WEc1cGJYQnZjblFnZTBGdGFXNXZZV05wWkhNc0lFRnRhVzV2WVdOcFpITlFZV3hsZEhSbGMzMGdabkp2YlNBbkxpNHZZVzFwYm05aFkybGtjeWM3WEc1cGJYQnZjblFnZTA1MVkyeGxiM1JwWkdWekxDQk9kV05zWlc5MGFXUmxjMUJoYkdWMGRHVnpmU0JtY205dElDY3VMaTl1ZFdOc1pXOTBhV1JsY3ljN1hHNXBiWEJ2Y25RZ2UxVnVhMjV2ZDI1VFpYRlFZV3hsZEhSbGMzMGdabkp2YlNBbkxpNHZkVzVyYm05M2JpYzdYRzVwYlhCdmNuUWdlMVZ1YVhSelNHRnVaR3hsY24wZ1puSnZiU0FuTGk0dmRYUnBiSE12ZFc1cGRITXRhR0Z1Wkd4bGNpYzdYRzVjYmx4dUx5b3FJR1Z1ZFcwZ2RIbHdaU0IwYnlCemFXMXdiR2xtZVNCelpYUjBhVzVuSUZ3aWRYTmxjaTFtY21sbGJtUnNlVndpSUc1dmRHRjBhVzl1SUdsbUlHNWxZMlZ6YzJGeWVTQXFMMXh1Wlhod2IzSjBJR052Ym5OMElHVnVkVzBnVGs5VVFWUkpUMDRnZTF4dUlDQkdRVk5VUVNBOUlDZG1ZWE4wWVNjc1hHNGdJRk5GVUVGU1FWUlBVaUE5SUNkelpYQmhjbUYwYjNJbkxGeHVJQ0JJUlV4TklEMGdKMmhsYkcwbkxGeHVmVnh1WEc1bGVIQnZjblFnWTI5dWMzUWdaVzUxYlNCQlRFbEhUazFGVGxRZ2UxeHVJQ0JUUlZGZlRWTkJJRDBnSjFORlVTNU5VMEVuTEZ4dUlDQlRSVkVnUFNBblUwVlJKeXhjYm4xY2JseHVaWGh3YjNKMElHTnZibk4wSUdWdWRXMGdRVXhRU0VGQ1JWUWdlMXh1SUNCRVRrRWdQU0FuUkU1Qkp5eGNiaUFnVWs1QklEMGdKMUpPUVNjc1hHNGdJRkJVSUQwZ0oxQlVKeXhjYmlBZ1ZVNGdQU0FuVlU0bkxGeHVmVnh1WEc1bGVIQnZjblFnWTI5dWMzUWdaVzUxYlNCVVFVZFRJSHRjYmlBZ1lXeHBaMjVsWkNBOUlDZGhiR2xuYm1Wa0p5eGNiaUFnWVd4d2FHRmlaWFFnUFNBbllXeHdhR0ZpWlhRbkxGeHVJQ0JoYkhCb1lXSmxkRk5wZW1VZ1BTQW5MbUZzY0doaFltVjBVMmw2WlNjc1hHNGdJR0ZzY0doaFltVjBTWE5OZFd4MGFXTm9ZWElnUFNBbkxtRnNjR2hoWW1WMFNYTk5kV3gwYVdOb1lYSW5MRnh1SUNCelpYQmhjbUYwYjNJZ1BTQW5jMlZ3WVhKaGRHOXlKeXhjYm4wN1hHNWNibVY0Y0c5eWRDQjBlWEJsSUZObGNVTnZiRk4wWVhSeklEMGdleUJtY21WeE9pQk5iMjV2YldWeVJuSmxjWE1zSUhOaGJXVk1aVzVuZEdnNklHSnZiMnhsWVc0Z2ZWeHVaWGh3YjNKMElIUjVjR1VnVTNCc2FYUjBaWEpHZFc1aklEMGdLSE5sY1RvZ2MzUnlhVzVuS1NBOVBpQnpkSEpwYm1kYlhUdGNibVY0Y0c5eWRDQjBlWEJsSUUxdmJtOXRaWEpHY21WeGN5QTlJSHNnVzIwNklITjBjbWx1WjEwNklHNTFiV0psY2lCOU8xeHVYRzR2S2lvZ1UzUmhkSE1nYjJZZ2MyVnhkV1Z1WTJWeklIZHBkR2dnYzNCbFkybG1hV1ZrSUhOd2JHbDBkR1Z5SUdaMWJtTXNJSEpsZEhWeWJuTWdleUJtY21WeExDQnpZVzFsVEdWdVozUm9JSDB1WEc0Z0tpQkFjR0Z5WVcwZ2UwUkhMa052YkhWdGJuMGdjMlZ4UTI5c1hHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdiV2x1VEdWdVozUm9YRzRnS2lCQWNHRnlZVzBnZTFOd2JHbDBkR1Z5Um5WdVkzMGdjM0JzYVhSMFpYSmNiaUFxSUVCeVpYUjFjbTRnZXlCVFpYRkRiMnhUZEdGMGN5QjlMQ0J6WVcxbFRHVnVaM1JvT2lCaWIyOXNaV0Z1SUgwZ2MzUmhkSE1nYjJZZ1kyOXNkVzF1SUhObGNYVmxibU5sYzF4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwVTNSaGRITW9jMlZ4UTI5c09pQkVSeTVEYjJ4MWJXNHNJRzFwYmt4bGJtZDBhRG9nYm5WdFltVnlMQ0J6Y0d4cGRIUmxjam9nVTNCc2FYUjBaWEpHZFc1aktUb2dVMlZ4UTI5c1UzUmhkSE1nZTF4dUlDQmpiMjV6ZENCbWNtVnhPaUI3SUZ0dE9pQnpkSEpwYm1kZE9pQnVkVzFpWlhJZ2ZTQTlJSHQ5TzF4dUlDQnNaWFFnYzJGdFpVeGxibWQwYUNBOUlIUnlkV1U3WEc0Z0lHeGxkQ0JtYVhKemRFeGxibWQwYUNBOUlHNTFiR3c3WEc1Y2JpQWdabTl5SUNoamIyNXpkQ0J6WlhFZ2IyWWdjMlZ4UTI5c0xtTmhkR1ZuYjNKcFpYTXBJSHRjYmlBZ0lDQmpiMjV6ZENCdFUyVnhJRDBnYzNCc2FYUjBaWElvYzJWeEtUdGNibHh1SUNBZ0lHbG1JQ2htYVhKemRFeGxibWQwYUNBOVBTQnVkV3hzS1Z4dUlDQWdJQ0FnWm1seWMzUk1aVzVuZEdnZ1BTQnRVMlZ4TG14bGJtZDBhRHRjYmlBZ0lDQmxiSE5sSUdsbUlDaHRVMlZ4TG14bGJtZDBhQ0FoUFQwZ1ptbHljM1JNWlc1bmRHZ3BYRzRnSUNBZ0lDQnpZVzFsVEdWdVozUm9JRDBnWm1Gc2MyVTdYRzVjYmlBZ0lDQnBaaUFvYlZObGNTNXNaVzVuZEdnZ1BqMGdiV2x1VEdWdVozUm9LU0I3WEc0Z0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUcwZ2IyWWdiVk5sY1NrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvSVNodElHbHVJR1p5WlhFcEtWeHVJQ0FnSUNBZ0lDQWdJR1p5WlhGYmJWMGdQU0F3TzF4dUlDQWdJQ0FnSUNCbWNtVnhXMjFkSUNzOUlERTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCN1puSmxjVG9nWm5KbGNTd2djMkZ0WlV4bGJtZDBhRG9nYzJGdFpVeGxibWQwYUgwN1hHNTlYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQnRiMjV2YldWeVVtVTZJRkpsWjBWNGNDQTlJQzljWEZzb1hGeDNLeWxjWEYxOEtGeGNkeWw4S0MwcEwyYzdYRzVjYmk4cUtpQlRjR3hwZENCelpYRjFaVzVqWlNCbWIzSWdjMmx1WjJ4bElHTm9ZWEpoWTNSbGNpQnRiMjV2YldWeWN5d2djM0YxWVhKbElHSnlZV05yWlhSeklHMTFiSFJwWTJoaGNpQnRiMjV2YldWeUlHNWhiV1Z6SUc5eUlHZGhjQ0J6ZVcxaWIyd3VYRzRnS2lCQWNHRnlZVzBnZTJGdWVYMGdjMlZ4SUc5aWFtVmpkQ0IzYVhSb0lITmxjWFZsYm1ObFhHNGdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZGJYWDBnWVhKeVlYa2diMllnYlc5dWIyMWxjbk5jYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlITndiR2wwZEdWeVFYTkdZWE4wWVNoelpYRTZJR0Z1ZVNrNklITjBjbWx1WjF0ZElIdGNiaUFnY21WMGRYSnVJSGQxUEZKbFowVjRjRTFoZEdOb1FYSnlZWGsrS0hObGNTNTBiMU4wY21sdVp5Z3BMbTFoZEdOb1FXeHNLRzF2Ym05dFpYSlNaU2twWEc0Z0lDQWdMbTFoY0Nnb2JXRTZJRkpsWjBWNGNFMWhkR05vUVhKeVlYa3BJRDArSUh0Y2JpQWdJQ0FnSUd4bGRDQnRVbVZ6T2lCemRISnBibWM3WEc0Z0lDQWdJQ0JqYjI1emRDQnRPaUJ6ZEhKcGJtY2dQU0J0WVZzd1hUdGNiaUFnSUNBZ0lHbG1JQ2h0TG14bGJtZDBhQ0ErSURFcElIdGNiaUFnSUNBZ0lDQWdiVkpsY3lBOUlHMWhXekZkTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnYlZKbGN5QTlJRzA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiVkpsY3p0Y2JpQWdJQ0I5S1M1MGIwRnljbUY1S0NrN1hHNTlYRzVjYmk4cUtpQkhaWFJ6SUcxbGRHaHZaQ0IwYnlCemNHeHBkQ0J6WlhGMVpXNWpaU0JpZVNCelpYQmhjbUYwYjNKY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnpaWEJoY21GMGIzSmNiaUFxSUVCd1lYSmhiU0JzYVcxcGRGeHVJQ29nUUhKbGRIVnliaUI3VTNCc2FYUjBaWEpHZFc1amZWeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFUzQnNhWFIwWlhKWGFYUm9VMlZ3WVhKaGRHOXlLSE5sY0dGeVlYUnZjam9nYzNSeWFXNW5MQ0JzYVcxcGREb2diblZ0WW1WeUlId2dkVzVrWldacGJtVmtJRDBnZFc1a1pXWnBibVZrS1RvZ1UzQnNhWFIwWlhKR2RXNWpJSHRjYmlBZ2NtVjBkWEp1SUNoelpYRTZJSE4wY21sdVp5a2dQVDRnZTF4dUlDQWdJSEpsZEhWeWJpQnpaWEV1YzNCc2FYUW9jMlZ3WVhKaGRHOXlMQ0JzYVcxcGRDazdYRzRnSUgwN1hHNTlYRzVjYm1OdmJuTjBJR2hsYkcxU1pUb2dVbVZuUlhod0lEMGdMeWhRUlZCVVNVUkZNWHhFVGtFeGZGSk9RVEVwWEZ4N0tGdGVmVjByS1gwdlp6dGNibU52Ym5OMElHaGxiRzFRY0RGU1pUb2dVbVZuUlhod0lEMGdMMXhjV3loYlhseGNXMXhjWFYwcktWMHZaenRjYmx4dUx5b3FJRk53YkdsMGN5QklaV3h0SUhOMGNtbHVaeUIwYnlCdGIyNXZiV1Z5Y3l3Z1luVjBJR1J2WlhNZ2JtOTBJSEpsY0d4aFkyVWdiVzl1YjIxbGNpQnVZVzFsY3lCMGJ5QnZkR2hsY2lCdWIzUmhkR2x2YmlBb1pTNW5MaUJtYjNJZ1VrNUJLUzVjYmlBcUlFOXViSGtnWm05eUlHeHBibVZoY2lCd2IyeDViV1Z5Y3l3Z1pHOWxjeUJ1YjNRZ2MzQnNhWFFnVWs1QklHWnZjaUJ5YVdKdmMyVWdZVzVrSUhCb2IzTndhR0YwWlNCdGIyNXZiV1Z5Y3k1Y2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnpaWEVnVTI5MWNtTmxJSE4wY21sdVp5QnZaaUJJUlV4TklHNXZkR0YwYVc5dVhHNGdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZGJYWDFjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlITndiR2wwZEdWeVFYTklaV3h0S0hObGNUb2dZVzU1S1RvZ2MzUnlhVzVuVzEwZ2UxeHVJQ0JvWld4dFVtVXViR0Z6ZEVsdVpHVjRJRDBnTUR0Y2JpQWdZMjl1YzNRZ1pXRTZJRkpsWjBWNGNFVjRaV05CY25KaGVTQjhJRzUxYkd3Z1BTQm9aV3h0VW1VdVpYaGxZeWh6WlhFdWRHOVRkSEpwYm1jb0tTazdYRzRnSUdOdmJuTjBJR2x1VTJWeE9pQnpkSEpwYm1jZ2ZDQnVkV3hzSUQwZ1pXRWdQeUJsWVZzeVhTQTZJRzUxYkd3N1hHNWNiaUFnWTI5dWMzUWdiVzFRYjNOMFVISnZZMlZ6Y3lBOUlDaHRiVG9nYzNSeWFXNW5LVG9nYzNSeWFXNW5JRDArSUh0Y2JpQWdJQ0JvWld4dFVIQXhVbVV1YkdGemRFbHVaR1Y0SUQwZ01EdGNiaUFnSUNCamIyNXpkQ0J3Y0RGTklEMGdhR1ZzYlZCd01WSmxMbVY0WldNb2JXMHBPMXh1SUNBZ0lHbG1JQ2h3Y0RGTklDWW1JSEJ3TVUwdWJHVnVaM1JvSUQ0OUlESXBYRzRnSUNBZ0lDQnlaWFIxY200Z2NIQXhUVnN4WFR0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCeVpYUjFjbTRnYlcwN1hHNGdJSDA3WEc1Y2JpQWdZMjl1YzNRZ2JXMU1hWE4wT2lCemRISnBibWRiWFNBOUlHbHVVMlZ4SUQ4Z2FXNVRaWEV1YzNCc2FYUW9KeTRuS1NBNklGdGRPMXh1SUNCeVpYUjFjbTRnYlcxTWFYTjBMbTFoY0NodGJWQnZjM1JRY205alpYTnpLVHRjYm4xY2JseHVMeW9xSUVkbGRDQnpjR3hwZEhSbGNpQnRaWFJvYjJRZ2RHOGdjM0JzYVhRZ2MyVnhkV1Z1WTJWeklIUnZJRzF2Ym05dFpYSnpYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnZFc1cGRITmNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J6WlhCaGNtRjBiM0pjYmlBcUlFQndZWEpoYlNCc2FXMXBkRnh1SUNvZ1FISmxkSFZ5YmlCN1UzQnNhWFIwWlhKR2RXNWpmVnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1oyVjBVM0JzYVhSMFpYSW9kVzVwZEhNNklITjBjbWx1Wnl3Z2MyVndZWEpoZEc5eU9pQnpkSEpwYm1jc0lHeHBiV2wwT2lCdWRXMWlaWElnZkNCMWJtUmxabWx1WldRZ1BTQjFibVJsWm1sdVpXUXBPaUJUY0d4cGRIUmxja1oxYm1NZ2UxeHVJQ0JwWmlBb2RXNXBkSE11ZEc5TWIzZGxja05oYzJVb0tTNXpkR0Z5ZEhOWGFYUm9LRTVQVkVGVVNVOU9Ma1pCVTFSQktTbGNiaUFnSUNCeVpYUjFjbTRnYzNCc2FYUjBaWEpCYzBaaGMzUmhPMXh1SUNCbGJITmxJR2xtSUNoMWJtbDBjeTUwYjB4dmQyVnlRMkZ6WlNncExuTjBZWEowYzFkcGRHZ29UazlVUVZSSlQwNHVVMFZRUVZKQlZFOVNLU2xjYmlBZ0lDQnlaWFIxY200Z1oyVjBVM0JzYVhSMFpYSlhhWFJvVTJWd1lYSmhkRzl5S0hObGNHRnlZWFJ2Y2l3Z2JHbHRhWFFwTzF4dUlDQmxiSE5sSUdsbUlDaDFibWwwY3k1MGIweHZkMlZ5UTJGelpTZ3BMbk4wWVhKMGMxZHBkR2dvVGs5VVFWUkpUMDR1U0VWTVRTa3BYRzRnSUNBZ2NtVjBkWEp1SUhOd2JHbDBkR1Z5UVhOSVpXeHRPMXh1SUNCbGJITmxYRzRnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dCVmJtVjRjR1ZqZEdWa0lIVnVhWFJ6SUNSN2RXNXBkSE45SUM1Z0tUdGNibHh1SUNBdkx5QlVUMFJQT2lCVGNHeHBkSFJsY2lCbWIzSWdTRVZNVFZ4dWZWeHVYRzR2S2lvZ1IyVnVaWEpoZEdVZ2MzQnNhWFIwWlhJZ1puVnVZM1JwYjI0Z1ptOXlJSE5sY1hWbGJtTmxJR052YkhWdGJseHVJQ29nUUhCaGNtRnRJSHRFUnk1RGIyeDFiVzU5SUdOdmJGeHVJQ29nUUhKbGRIVnliaUI3VTNCc2FYUjBaWEpHZFc1amZTQlRjR3hwZEhSbGNpQm1kVzVqZEdsdmJseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFUzQnNhWFIwWlhKR2IzSkRiMngxYlc0b1kyOXNPaUJFUnk1RGIyeDFiVzRwT2lCVGNHeHBkSFJsY2taMWJtTWdlMXh1SUNCcFppQW9ZMjlzTG5ObGJWUjVjR1VnSVQwOUlFUkhMbE5GVFZSWlVFVXVUVUZEVWs5TlQweEZRMVZNUlNsY2JpQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRWRsZENCemNHeHBkSFJsY2lCbWIzSWdjMlZ0Vkhsd1pTQmNJaVI3UkVjdVUwVk5WRmxRUlM1TlFVTlNUMDFQVEVWRFZVeEZmVndpSUc5dWJIa3VZQ2s3WEc1Y2JpQWdZMjl1YzNRZ2RXNXBkSE1nUFNCamIyd3VaMlYwVkdGbktFUkhMbFJCUjFNdVZVNUpWRk1wTzF4dUlDQmpiMjV6ZENCelpYQmhjbUYwYjNJZ1BTQmpiMnd1WjJWMFZHRm5LRlJCUjFNdWMyVndZWEpoZEc5eUtUdGNiaUFnY21WMGRYSnVJR2RsZEZOd2JHbDBkR1Z5S0hWdWFYUnpMQ0J6WlhCaGNtRjBiM0lwTzF4dWZWeHVYRzVqYjI1emRDQnNiMjVuVFc5dWIyMWxjbEJoY25SU1pUb2dVbVZuUlhod0lEMGdMeWhjWEhjcktTOW5PMXh1WEc0dktpb2dRMjl1ZG1WeWRDQnNiMjVuSUcxdmJtOXRaWElnYm1GdFpYTWdkRzhnYzJodmNuUWdiMjVsY3lBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHMXZibTl0WlhKVWIxTm9iM0owS0dGdGFXNXZPaUJ6ZEhKcGJtY3NJRzFoZUV4bGJtZDBhRTltVFc5dWIyMWxjam9nYm5WdFltVnlLVG9nYzNSeWFXNW5JSHRjYmlBZ1kyOXVjM1FnYzJodmNuUkJiV2x1YjAxaGRHTm9PaUJTWldkRmVIQk5ZWFJqYUVGeWNtRjVJSHdnYm5Wc2JDQTlJR0Z0YVc1dkxtMWhkR05vS0d4dmJtZE5iMjV2YldWeVVHRnlkRkpsS1R0Y2JpQWdZMjl1YzNRZ2JtVmxaRUZrWkVSdmRITTZJR0p2YjJ4bFlXNGdQU0JoYldsdWJ5NXNaVzVuZEdnZ1BpQnRZWGhNWlc1bmRHaFBaazF2Ym05dFpYSWdmSHdnS0hOb2IzSjBRVzFwYm05TllYUmphRDh1YkdWdVozUm9JRDgvSURBcElENGdNVHRjYmlBZ1kyOXVjM1FnYzJodmNuUkJiV2x1YnlBOUlITm9iM0owUVcxcGJtOU5ZWFJqYUQ4dVd6QmRJRDgvSUNjZ0p6dGNiaUFnY21WMGRYSnVJQ0Z1WldWa1FXUmtSRzkwY3lBL0lITm9iM0owUVcxcGJtOGdPaUJ6YUc5eWRFRnRhVzV2TG5OMVluTjBjbWx1Wnlnd0xDQnRZWGhNWlc1bmRHaFBaazF2Ym05dFpYSXBJQ3NnSitLQXBpYzdYRzU5WEc1Y2JpOHFLaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFRnNjR2hoWW1WMEtHRnNjR2hoWW1WME9pQkJURkJJUVVKRlZDazZJRk5sZER4emRISnBibWMrSUh0Y2JpQWdjM2RwZEdOb0lDaGhiSEJvWVdKbGRDa2dlMXh1SUNCallYTmxJRUZNVUVoQlFrVlVMa1JPUVRwY2JpQWdJQ0J5WlhSMWNtNGdWVzVwZEhOSVlXNWtiR1Z5TGtSdVlVWmhjM1JoUVd4d2FHRmlaWFE3WEc0Z0lHTmhjMlVnUVV4UVNFRkNSVlF1VWs1Qk9seHVJQ0FnSUhKbGRIVnliaUJWYm1sMGMwaGhibVJzWlhJdVVtNWhSbUZ6ZEdGQmJIQm9ZV0psZER0Y2JpQWdZMkZ6WlNCQlRGQklRVUpGVkM1UVZEcGNiaUFnSUNCeVpYUjFjbTRnVlc1cGRITklZVzVrYkdWeUxsQmxjSFJwWkdWR1lYTjBZVUZzY0doaFltVjBPMXh1SUNCa1pXWmhkV3gwT2x4dUlDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdWVzV6ZFhCd2IzSjBaV1FnWVd4d2FHRmlaWFFnSnlSN1lXeHdhR0ZpWlhSOUp5NWdLVHRjYmlBZ2ZWeHVmVnh1WEc0dktpb2dRMkZzWTNWc1lYUmxJSE5wYldsc1lYSnBkSGtnYVc0Z1kzVnljbVZ1ZENCelpYRjFaVzVqWlNCaGJtUWdZV3h3YUdGaVpYUXVYRzRnS2lCQWNHRnlZVzBnZTAxdmJtOXRaWEpHY21WeGMzMGdabkpsY1Z4dUlDb2dRSEJoY21GdElIdFRaWFE4YzNSeWFXNW5QbjBnWVd4d2FHRmlaWFJjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCbllYQlRlVzFpYjJ4Y2JpQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMGdRMjl6YVc1bElITnBiV2xzWVhKcGRIbGNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFRnNjR2hoWW1WMFUybHRhV3hoY21sMGVTaG1jbVZ4T2lCTmIyNXZiV1Z5Um5KbGNYTXNJR0ZzY0doaFltVjBPaUJUWlhROGMzUnlhVzVuUGl3Z1oyRndVM2x0WW05c09pQnpkSEpwYm1jZ1BTQW5MU2NwT2lCdWRXMWlaWElnZTF4dUlDQmpiMjV6ZENCclpYbHpJRDBnYm1WM0lGTmxkRHh6ZEhKcGJtYytLRnN1TGk1dVpYY2dVMlYwS0U5aWFtVmpkQzVyWlhsektHWnlaWEVwS1N3Z0xpNHVZV3h3YUdGaVpYUmRLVHRjYmlBZ2EyVjVjeTVrWld4bGRHVW9aMkZ3VTNsdFltOXNLVHRjYmx4dUlDQmpiMjV6ZENCbWNtVnhRVG9nYm5WdFltVnlXMTBnUFNCYlhUdGNiaUFnWTI5dWMzUWdZV3h3YUdGaVpYUkJPaUJ1ZFcxaVpYSmJYU0E5SUZ0ZE8xeHVJQ0JtYjNJZ0tHTnZibk4wSUcwZ2IyWWdhMlY1Y3lrZ2UxeHVJQ0FnSUdaeVpYRkJMbkIxYzJnb2JTQnBiaUJtY21WeElEOGdabkpsY1Z0dFhTQTZJREFwTzF4dUlDQWdJR0ZzY0doaFltVjBRUzV3ZFhOb0tHRnNjR2hoWW1WMExtaGhjeWh0S1NBL0lERWdPaUF3S1R0Y2JpQWdmVnh1SUNBdktpQlVhR1Z5WlNCM1pYSmxJR0VnWm1WM0lHbGtaV0Z6T2lCamFHa3RjM0YxWVhKbFpDd2djR1ZoY25OdmJpQmpiM0p5Wld4aGRHbHZiaUFvZG1GeWFXRnVZMlUvS1N3Z2MyTmhiR0Z5SUhCeWIyUjFZM1FnS2k5Y2JpQWdZMjl1YzNRZ1puSmxjVlk2SUZabFkzUnZjaUE5SUc1bGR5QldaV04wYjNJb1puSmxjVUVwTzF4dUlDQmpiMjV6ZENCaGJIQm9ZV0psZEZZNklGWmxZM1J2Y2lBOUlHNWxkeUJXWldOMGIzSW9ZV3h3YUdGaVpYUkJLVHRjYmlBZ2NtVjBkWEp1SUhabFkzUnZja1J2ZEZCeWIyUjFZM1FvWm5KbGNWWXNJR0ZzY0doaFltVjBWaWtnTHlBb2RtVmpkRzl5VEdWdVozUm9LR1p5WlhGV0tTQXFJSFpsWTNSdmNreGxibWQwYUNoaGJIQm9ZV0psZEZZcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdSbGRHVmpkRUZzY0doaFltVjBLSE4wWVhSek9pQlRaWEZEYjJ4VGRHRjBjeWs2SUhOMGNtbHVaeUI3WEc0Z0lHTnZibk4wSUdGc2NHaGhZbVYwUTJGdVpHbGtZWFJsY3pvZ1czTjBjbWx1Wnl3Z1UyVjBQSE4wY21sdVp6NWRXMTBnUFNCYlhHNGdJQ0FnVzBGTVVFaEJRa1ZVTGxCVUxDQlZibWwwYzBoaGJtUnNaWEl1VUdWd2RHbGtaVVpoYzNSaFFXeHdhR0ZpWlhSZExGeHVJQ0FnSUZ0QlRGQklRVUpGVkM1RVRrRXNJRlZ1YVhSelNHRnVaR3hsY2k1RWJtRkdZWE4wWVVGc2NHaGhZbVYwWFN4Y2JpQWdJQ0JiUVV4UVNFRkNSVlF1VWs1QkxDQlZibWwwYzBoaGJtUnNaWEl1VW01aFJtRnpkR0ZCYkhCb1lXSmxkRjBzWEc0Z0lGMDdYRzVjYmlBZ0x5OGdRMkZzWTNWc1lYUmxJR3hwYTJWc2FXaHZiMlJ6SUdadmNpQmhiSEJvWVdKbGRGOWpZVzVrYVdSaGRHVnpYRzRnSUdOdmJuTjBJR0ZzY0doaFltVjBRMkZ1Wkdsa1lYUmxjMU5wYlRvZ2JuVnRZbVZ5VzEwZ1BTQmhiSEJvWVdKbGRFTmhibVJwWkdGMFpYTXViV0Z3S0Z4dUlDQWdJQ2hqS1NBOVBpQm5aWFJCYkhCb1lXSmxkRk5wYldsc1lYSnBkSGtvYzNSaGRITXVabkpsY1N3Z1kxc3hYU2twTzF4dUlDQmpiMjV6ZENCdFlYaERiM01nUFNCTllYUm9MbTFoZUNndUxpNWhiSEJvWVdKbGRFTmhibVJwWkdGMFpYTlRhVzBwTzF4dUlDQmpiMjV6ZENCaGJIQm9ZV0psZENBOUlHMWhlRU52Y3lBK0lEQXVOalVnUHlCaGJIQm9ZV0psZEVOaGJtUnBaR0YwWlhOYllXeHdhR0ZpWlhSRFlXNWthV1JoZEdWelUybHRMbWx1WkdWNFQyWW9iV0Y0UTI5ektWMWJNRjBnT2lBblZVNG5PMXh1SUNCeVpYUjFjbTRnWVd4d2FHRmlaWFE3WEc1OVhHNWNiaThxS2lCVFpXeGxZM1J6SUdFZ2MzVnBkR0ZpYkdVZ2NHRnNaWFIwWlNCaVlYTmxaQ0J2YmlCamIyeDFiVzRnWkdGMFlWeHVJQ29nUUhCaGNtRnRJSHRFUnk1RGIyeDFiVzU5SUhObGNVTnZiQ0JEYjJ4MWJXNGdkRzhnYkc5dmF5Qm1iM0lnWVNCd1lXeGxkSFJsWEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ0lHMXBia3hsYm1kMGFDQnRhVzVwYlhWdElHeGxibWQwYUNCdlppQnpaWEYxWlc1alpTQjBieUJrWlhSbFkzUWdjR0ZzWlhSMFpTQW9aVzF3ZEhrZ2MzUnlhVzVuY3lCaGNtVWdZV3hzYjNkbFpDbGNiaUFxSUVCeVpYUjFjbTRnZTFObGNWQmhiR1YwZEdWOUlGQmhiR1YwZEdVZ1kyOXljbVZ6Y0c5dVpHbHVaeUIwYnlCMGFHVWdZV3h3YUdGaVpYUWdiMllnZEdobElITmxjWFZsYm1ObGN5QnBiaUIwYUdVZ1kyOXNkVzF1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQndhV05yVlhCUVlXeGxkSFJsS0hObGNVTnZiRG9nUkVjdVEyOXNkVzF1TENCdGFXNU1aVzVuZEdnNklHNTFiV0psY2lBOUlEVXBPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdiR1YwSUdGc2NHaGhZbVYwT2lCemRISnBibWM3WEc0Z0lHbG1JQ2h6WlhGRGIyd3VjMlZ0Vkhsd1pTQTlQU0JFUnk1VFJVMVVXVkJGTGsxQlExSlBUVTlNUlVOVlRFVXBJSHRjYmlBZ0lDQmpiMjV6ZENCMWFEb2dWVzVwZEhOSVlXNWtiR1Z5SUQwZ2JtVjNJRlZ1YVhSelNHRnVaR3hsY2loelpYRkRiMndwTzF4dUlDQWdJR0ZzY0doaFltVjBJRDBnZFdndVlXeHdhR0ZpWlhRN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ1kyOXVjM1FnYzNSaGRITTZJRk5sY1VOdmJGTjBZWFJ6SUQwZ1oyVjBVM1JoZEhNb2MyVnhRMjlzTENCdGFXNU1aVzVuZEdnc0lITndiR2wwZEdWeVFYTkdZWE4wWVNrN1hHNGdJQ0FnWVd4d2FHRmlaWFFnUFNCa1pYUmxZM1JCYkhCb1lXSmxkQ2h6ZEdGMGN5azdYRzRnSUgxY2JseHVJQ0JqYjI1emRDQnlaWE1nUFNCblpYUlFZV3hsZEhSbFFubFVlWEJsS0dGc2NHaGhZbVYwS1R0Y2JpQWdjbVYwZFhKdUlISmxjenRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRkJoYkdWMGRHVkNlVlI1Y0dVb2NHRnNaWFIwWlZSNWNHVTZJSE4wY21sdVp5azZJRk5sY1ZCaGJHVjBkR1VnZTF4dUlDQnpkMmwwWTJnZ0tIQmhiR1YwZEdWVWVYQmxLU0I3WEc0Z0lHTmhjMlVnSjFCVUp6cGNiaUFnSUNCeVpYUjFjbTRnUVcxcGJtOWhZMmxrYzFCaGJHVjBkR1Z6TGtkeWIydEhjbTkxY0hNN1hHNGdJR05oYzJVZ0owNVVKenBjYmlBZ1kyRnpaU0FuUkU1Qkp6cGNiaUFnWTJGelpTQW5VazVCSnpwY2JpQWdJQ0J5WlhSMWNtNGdUblZqYkdWdmRHbGtaWE5RWVd4bGRIUmxjeTVEYUhKdmJXRjBiMmR5WVcwN1hHNGdJQ0FnTHk4Z2IzUm9aWEpjYmlBZ1pHVm1ZWFZzZERwY2JpQWdJQ0J5WlhSMWNtNGdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVnpMa052Ykc5eU8xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQndhV05yVlhCVFpYRkRiMndvWkdZNklFUkhMa1JoZEdGR2NtRnRaU2s2SUVSSExrTnZiSFZ0YmlCOElHNTFiR3dnZTF4dUlDQmpiMjV6ZENCelpXMVVlWEJsUTI5c1RHbHpkQ0E5SUdSbUxtTnZiSFZ0Ym5NdVlubFRaVzFVZVhCbFFXeHNLRVJITGxORlRWUlpVRVV1VFVGRFVrOU5UMHhGUTFWTVJTazdYRzRnSUd4bGRDQnlaWE5EYjJ3NklFUkhMa052YkhWdGJpQjhJRzUxYkd3Z1BTQnpaVzFVZVhCbFEyOXNUR2x6ZEM1bWFXNWtLQ2hqYjJ3cElEMCtJSHRjYmlBZ0lDQmpiMjV6ZENCMWJtbDBjeUE5SUdOdmJDNW5aWFJVWVdjb1JFY3VWRUZIVXk1VlRrbFVVeWs3WEc0Z0lDQWdjbVYwZFhKdUlIVnVhWFJ6SUQ4Z2RXNXBkSE11YVc1a1pYaFBaaWduVFZOQkp5a2dJVDA5SUMweElEb2dabUZzYzJVN1hHNGdJSDBwSUQ4L0lHNTFiR3c3WEc0Z0lHbG1JQ2doY21WelEyOXNJQ1ltSUhObGJWUjVjR1ZEYjJ4TWFYTjBMbXhsYm1kMGFDQStJREFwWEc0Z0lDQWdjbVZ6UTI5c0lEMGdjMlZ0Vkhsd1pVTnZiRXhwYzNSYk1GMDdYRzRnSUhKbGRIVnliaUJ5WlhORGIydzdYRzU5WEc0aVhYMD0iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgVW5pdHNIYW5kbGVyIH0gZnJvbSAnLi91bml0cy1oYW5kbGVyJztcbmltcG9ydCB7IGdldFNwbGl0dGVyRm9yQ29sdW1uLCBnZXRTdGF0cyB9IGZyb20gJy4vbWFjcm9tb2xlY3VsZSc7XG4vKiogQ2xhc3MgZm9yIGhhbmRsaW5nIGNvbnZlcnNpb24gb2Ygbm90YXRpb24gc3lzdGVtcyBpbiBNYWNyb21vbGVjdWxlIGNvbHVtbnMgKi9cbmV4cG9ydCBjbGFzcyBOb3RhdGlvbkNvbnZlcnRlciBleHRlbmRzIFVuaXRzSGFuZGxlciB7XG4gICAgZ2V0IHNwbGl0dGVyKCkge1xuICAgICAgICBpZiAodGhpcy5fc3BsaXR0ZXIgPT09IG51bGwpXG4gICAgICAgICAgICB0aGlzLl9zcGxpdHRlciA9IGdldFNwbGl0dGVyRm9yQ29sdW1uKHRoaXMuY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NwbGl0dGVyO1xuICAgIH1cbiAgICB0b0Zhc3RhKHRhcmdldE5vdGF0aW9uKSB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgdG9TZXBhcmF0b3IodGFyZ2V0Tm90YXRpb24pIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIHRvSGVsbSh0YXJnZXROb3RhdGlvbikgeyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgTWFjcm9tb2xlY3VsZSBjb2x1bW4gZnJvbSBGQVNUQSB0byBTRVBBUkFUT1Igbm90YXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3IgIEEgc3BlY2lmaWMgc2VwYXJhdG9yIHRvIGJlIHVzZWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmFzdGFHYXBTeW1ib2wgIEdhcCBzeW1ib2wgaW4gRkFTVEEsICctJyBieSBkZWZhdWx0XG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufSAgICAgICAgQSBuZXcgY29sdW1uIGluIFNFUEFSQVRPUiBub3RhdGlvblxuICAgICAqL1xuICAgIGNvbnZlcnRGYXN0YVRvU2VwYXJhdG9yKHNlcGFyYXRvciwgZmFzdGFHYXBTeW1ib2wgPSBudWxsKSB7XG4gICAgICAgIGlmIChmYXN0YUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgICAgICAgIGZhc3RhR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLyk7XG4gICAgICAgIC8vIGFzc2lnbiB0aGUgdmFsdWVzIHRvIHRoZSBuZXdseSBjcmVhdGVkIGVtcHR5IGNvbHVtblxuICAgICAgICBuZXdDb2x1bW4uaW5pdCgoaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYXN0YVBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIGNvbnN0IGZhc3RhTW9ub21lcnNBcnJheSA9IHRoaXMuc3BsaXR0ZXIoZmFzdGFQb2x5bWVyKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmFzdGFNb25vbWVyc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZhc3RhTW9ub21lcnNBcnJheVtpXSA9PT0gZmFzdGFHYXBTeW1ib2wpXG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheVtpXSA9IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LlNFUEFSQVRPUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYXN0YU1vbm9tZXJzQXJyYXkuam9pbihzZXBhcmF0b3IpO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhERy5UQUdTLlVOSVRTLCBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLyk7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoXCJzZXBhcmF0b3JcIiAvKiBUQUdTLnNlcGFyYXRvciAqLywgc2VwYXJhdG9yKTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IHRoZSB3cmFwcGVyIHN0cmluZ3MgZm9yIEhFTE0sIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0aGVcbiAgICAgKiBtYWNyb21vbGVjdWxlIChwZXB0aWRlLCBETkEsIFJOQSlcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBBcnJheSBvZiB3cmFwcGVyc1xuICAgICAqL1xuICAgIGdldEhlbG1XcmFwcGVycygpIHtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gKHRoaXMuaXNEbmEoKSkgPyAnRE5BMXsnIDpcbiAgICAgICAgICAgICh0aGlzLmlzUm5hKCkpID8gJ1JOQTF7JyA6XG4gICAgICAgICAgICAgICAgKHRoaXMuaXNQZXB0aWRlKCkpID8gJ1BFUFRJREUxeycgOlxuICAgICAgICAgICAgICAgICAgICAnVW5rbm93bic7IC8vIHRoaXMgY2FzZSBzaG91bGQgYmUgaGFuZGxlZCBhcyBleGNlcHRpb25hbFxuICAgICAgICBpZiAocHJlZml4ID09PSAnVW5rbm93bicpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05laXRoZXIgcGVwdGlkZSwgbm9yIG51Y2xlb3RpZGUnKTtcbiAgICAgICAgY29uc3QgcG9zdGZpeCA9ICd9JCQkJztcbiAgICAgICAgY29uc3QgbGVmdFdyYXBwZXIgPSAodGhpcy5pc0RuYSgpKSA/ICdEKCcgOlxuICAgICAgICAgICAgKHRoaXMuaXNSbmEoKSkgPyAnUignIDogJyc7IC8vIG5vIHdyYXBwZXIgZm9yIHBlcHRpZGVzXG4gICAgICAgIGNvbnN0IHJpZ2h0V3JhcHBlciA9ICh0aGlzLmlzRG5hKCkgfHwgdGhpcy5pc1JuYSgpKSA/ICcpUCcgOiAnJzsgLy8gbm8gd3JhcHBlciBmb3IgcGVwdGlkZXNcbiAgICAgICAgcmV0dXJuIFtwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXhdO1xuICAgIH1cbiAgICAvLyBBIGhlbHBlciBmdW5jdGlvbiBmb3IgY29udmVydGluZyBzdHJpbmdzIHRvIEhFTE1cbiAgICBjb252ZXJ0VG9IZWxtSGVscGVyKHNvdXJjZVBvbHltZXIsIHNvdXJjZUdhcFN5bWJvbCwgcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4KSB7XG4gICAgICAgIGNvbnN0IG1vbm9tZXJBcnJheSA9IHRoaXMuc3BsaXR0ZXIoc291cmNlUG9seW1lcik7XG4gICAgICAgIGNvbnN0IG1vbm9tZXJIZWxtQXJyYXkgPSBtb25vbWVyQXJyYXkubWFwKChtbSkgPT4ge1xuICAgICAgICAgICAgaWYgKG1tID09PSBzb3VyY2VHYXBTeW1ib2wpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkhFTE07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2xlZnRXcmFwcGVyfSR7bW19JHtyaWdodFdyYXBwZXJ9YDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBgJHtwcmVmaXh9JHttb25vbWVySGVsbUFycmF5LmpvaW4oJy4nKX0ke3Bvc3RmaXh9YDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29udmVydCBhIHN0cmluZyB3aXRoIFNFUEFSQVRPUi9GQVNUQSBub3RhdGlvbiB0byBIRUxNXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlUG9seW1lciAgQSBzdHJpbmcgdG8gYmUgY29udmVydGVkXG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBzb3VyY2VHYXBTeW1ib2wgIEFuIG9wdGlvbmFsIGdhcCBzeW1ib2wsIHNldCB0b1xuICAgICAqIGRlZmF1bHQgdmFsdWVzICgnLScgZm9yIEZBU1RBIGFuZCAnJyBmb3IgU0VQQVJBVE9SKSB1bmxlc3Mgc3BlY2lmaWVkXG4gICAgICogQHJldHVybiB7c3RyaW5nfSAgVGhlIHRhcmdldCBIRUxNIHN0cmluZ1xuICAgICAqL1xuICAgIGNvbnZlcnRTdHJpbmdUb0hlbG0oc291cmNlUG9seW1lciwgc291cmNlR2FwU3ltYm9sID0gbnVsbCkge1xuICAgICAgICBpZiAoc291cmNlR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgICAgICAgc291cmNlR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuICAgICAgICBjb25zdCBbcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4XSA9IHRoaXMuZ2V0SGVsbVdyYXBwZXJzKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG1IZWxwZXIoc291cmNlUG9seW1lciwgc291cmNlR2FwU3ltYm9sLCBwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgY29sdW1uIHRvIEhFTE1cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gc291cmNlR2FwU3ltYm9sXG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufVxuICAgICAqL1xuICAgIGNvbnZlcnRUb0hlbG0oc291cmNlR2FwU3ltYm9sID0gbnVsbCkge1xuICAgICAgICBpZiAoc291cmNlR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgICAgICAgc291cmNlR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuICAgICAgICBjb25zdCBbcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4XSA9IHRoaXMuZ2V0SGVsbVdyYXBwZXJzKCk7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi8pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZVBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG1IZWxwZXIoc291cmNlUG9seW1lciwgc291cmNlR2FwU3ltYm9sLCBwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXgpO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhERy5UQUdTLlVOSVRTLCBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovKTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29udmVydCBTRVBBUkFUT1IgY29sdW1uIHRvIEZBU1RBIG5vdGF0aW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IGZhc3RhR2FwU3ltYm9sIE9wdGlvbmFsIGdhcCBzeW1ib2wgZm9yIEZBU1RBXG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufSAgQ29udmVydGVkIGNvbHVtblxuICAgICAqL1xuICAgIGNvbnZlcnRTZXBhcmF0b3JUb0Zhc3RhKGZhc3RhR2FwU3ltYm9sID0gbnVsbCkge1xuICAgICAgICBpZiAoZmFzdGFHYXBTeW1ib2wgPT09IG51bGwpXG4gICAgICAgICAgICBmYXN0YUdhcFN5bWJvbCA9IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkZBU1RBO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihcImZhc3RhXCIgLyogTk9UQVRJT04uRkFTVEEgKi8pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvclBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIC8vIGl0ZW1zIGNhbiBiZSBtb25vbWVycyBvciBzZXBhcmF0b3JzXG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3JJdGVtc0FycmF5ID0gdGhpcy5zcGxpdHRlcihzZXBhcmF0b3JQb2x5bWVyKTtcbiAgICAgICAgICAgIGNvbnN0IGZhc3RhTW9ub21lcnNBcnJheSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXBhcmF0b3JJdGVtc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHNlcGFyYXRvckl0ZW1zQXJyYXlbaV07XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKGZhc3RhR2FwU3ltYm9sKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjYXNlIG9mIGEgbXVsdGktY2hhcmFjdGVyIG1vbm9tZXJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9ub21lciA9ICdbJyArIGl0ZW0gKyAnXSc7XG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKG1vbm9tZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZmFzdGFNb25vbWVyc0FycmF5LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhc3RhTW9ub21lcnNBcnJheS5qb2luKCcnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovKTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogIENvbnZlcnQgSEVMTSBjb2x1bW4gdG8gRkFTVEEvU0VQQVJBVE9SXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGd0Tm90YXRpb24gICAgVGFyZ2V0IG5vdGF0aW9uOiBGQVNUQSBvciBTRVBBUkFUT1JcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGd0U2VwYXJhdG9yICAgT3B0aW9uYWwgdGFyZ2V0IHNlcGFyYXRvciAoZm9yIEhFTE0gLT5cbiAgICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IHRndEdhcFN5bWJvbCAgIE9wdGlvbmFsIHRhcmdldCBnYXAgc3ltYm9sXG4gICAgICogU0VQQVJBVE9SKVxuICAgICAqIEByZXR1cm4ge0RHLkNvbHVtbn0gQ29udmVydGVkIGNvbHVtblxuICAgICAqL1xuICAgIGNvbnZlcnRIZWxtKHRndE5vdGF0aW9uLCB0Z3RTZXBhcmF0b3IsIHRndEdhcFN5bWJvbCkge1xuICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIG11c3Qgbm90IGNvbnRhaW4gY2FsbHMgb2YgaXNEbmEoKSBhbmQgaXNSbmEoKSwgZm9yXG4gICAgICAgIC8vIHNvdXJjZSBoZWxtIGNvbHVtbnMgbWF5IGNvbnRhaW4gUk5BLCBETkEgYW5kIFBUIGFjcm9zcyBkaWZmZXJlbnQgcm93c1xuICAgICAgICBpZiAoIXRndEdhcFN5bWJvbCkge1xuICAgICAgICAgICAgdGd0R2FwU3ltYm9sID0gKHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikpID9cbiAgICAgICAgICAgICAgICBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5GQVNUQSA6XG4gICAgICAgICAgICAgICAgVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuU0VQQVJBVE9SO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGd0U2VwYXJhdG9yKSB7XG4gICAgICAgICAgICB0Z3RTZXBhcmF0b3IgPSAodGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSkgPyAnJyA6IHRoaXMuc2VwYXJhdG9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGhlbG1XcmFwcGVyc1JlID0gLyhSXFwofERcXCh8XFwpfFApL2c7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKHRndE5vdGF0aW9uKTtcbiAgICAgICAgLy8gYXNzaWduIHRoZSB2YWx1ZXMgdG8gdGhlIGVtcHR5IGNvbHVtblxuICAgICAgICBuZXdDb2x1bW4uaW5pdCgoaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBoZWxtUG9seW1lciA9IHRoaXMuY29sdW1uLmdldChpZHgpO1xuICAgICAgICAgICAgLy8gd2UgY2Fubm90IHVzZSBpc0RuYSgpIG9yIGlzUm5hKCkgYmVjYXVzZSBzb3VyY2UgaGVsbSBjb2x1bW5zIGNhblxuICAgICAgICAgICAgLy8gY29udGFpbiBETkEsIFJOQSBhbmQgUFQgaW4gZGlmZmVyZW50IGNlbGxzLCBzbyB0aGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgLy8gdGFncyBjYW5ub3QgYmUgc2V0IGZvciB0aGUgd2hvbGUgY29sdW1uXG4gICAgICAgICAgICBjb25zdCBpc051Y2xlb3RpZGUgPSBoZWxtUG9seW1lci5zdGFydHNXaXRoKCdETkEnKSB8fCBoZWxtUG9seW1lci5zdGFydHNXaXRoKCdSTkEnKTtcbiAgICAgICAgICAgIC8vIGl0ZW1zIGNhbiBiZSBtb25vbWVycyBvciBoZWxtc1xuICAgICAgICAgICAgY29uc3QgaGVsbUl0ZW1zQXJyYXkgPSB0aGlzLnNwbGl0dGVyKGhlbG1Qb2x5bWVyKTtcbiAgICAgICAgICAgIGNvbnN0IHRndE1vbm9tZXJzQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGVsbUl0ZW1zQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSA9IGhlbG1JdGVtc0FycmF5W2ldO1xuICAgICAgICAgICAgICAgIGlmIChpc051Y2xlb3RpZGUpXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnJlcGxhY2UoaGVsbVdyYXBwZXJzUmUsICcnKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSA9PT0gVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuSEVMTSkge1xuICAgICAgICAgICAgICAgICAgICB0Z3RNb25vbWVyc0FycmF5LnB1c2godGd0R2FwU3ltYm9sKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSAmJiBpdGVtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNhc2Ugb2YgYSBtdWx0aS1jaGFyYWN0ZXIgbW9ub21lciBjb252ZXJ0ZWQgdG8gRkFTVEFcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9ub21lciA9ICdbJyArIGl0ZW0gKyAnXSc7XG4gICAgICAgICAgICAgICAgICAgIHRndE1vbm9tZXJzQXJyYXkucHVzaChtb25vbWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRndE1vbm9tZXJzQXJyYXkucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGd0TW9ub21lcnNBcnJheS5qb2luKHRndFNlcGFyYXRvcik7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBUQUdTLmFsaWduZWQgaXMgbWFuZGF0b3J5IGZvciBjb2x1bW5zIG9mIE5PVEFUSU9OLkZBU1RBIGFuZCBOT1RBVElPTi5TRVBBUkFUT1JcbiAgICAgICAgY29uc3Qgc3BsaXR0ZXIgPSBnZXRTcGxpdHRlckZvckNvbHVtbihuZXdDb2x1bW4pO1xuICAgICAgICBjb25zdCBzdGF0cyA9IGdldFN0YXRzKG5ld0NvbHVtbiwgNSwgc3BsaXR0ZXIpO1xuICAgICAgICBjb25zdCBhbGlnbmVkID0gc3RhdHMuc2FtZUxlbmd0aCA/ICdTRVEuTVNBJyA6ICdTRVEnO1xuICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKFwiYWxpZ25lZFwiIC8qIFRBR1MuYWxpZ25lZCAqLywgYWxpZ25lZCk7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIGNvbnZlcnRIZWxtVG9TZXBhcmF0b3IoKSB7XG4gICAgICAgIC8vIFRPRE86IGltcGxlbWVudGF0aW9yZXR1cm4gdGhpcy5nZXROZXdDb2x1bW4oKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV3Q29sdW1uKFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovKTtcbiAgICB9XG4gICAgLyoqIERpc3BhdGNoZXIgbWV0aG9kIGZvciBub3RhdGlvbiBjb252ZXJzaW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge05PVEFUSU9OfSB0Z3ROb3RhdGlvbiAgIE5vdGF0aW9uIHdlIHdhbnQgdG8gY29udmVydCB0b1xuICAgICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gdGd0U2VwYXJhdG9yICAgUG9zc2libGUgc2VwYXJhdG9yXG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufSAgICAgICAgICAgICAgICBDb252ZXJ0ZWQgY29sdW1uXG4gICAgICovXG4gICAgY29udmVydCh0Z3ROb3RhdGlvbiwgdGd0U2VwYXJhdG9yID0gbnVsbCkge1xuICAgICAgICAvLyBwb3NzaWJsZSBleGNlcHRpb25zXG4gICAgICAgIGlmICh0aGlzLm5vdGF0aW9uID09PSB0Z3ROb3RhdGlvbilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndGd0IG5vdGF0aW9uIGlzIGludmFsaWQnKTtcbiAgICAgICAgaWYgKHRoaXMudG9TZXBhcmF0b3IodGd0Tm90YXRpb24pICYmIHRndFNlcGFyYXRvciA9PT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndGd0IHNlcGFyYXRvciBpcyBub3Qgc3BlY2lmaWVkJyk7XG4gICAgICAgIGlmICh0aGlzLmlzRmFzdGEoKSAmJiB0aGlzLnRvU2VwYXJhdG9yKHRndE5vdGF0aW9uKSAmJiB0Z3RTZXBhcmF0b3IgIT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0RmFzdGFUb1NlcGFyYXRvcih0Z3RTZXBhcmF0b3IpO1xuICAgICAgICBlbHNlIGlmICgodGhpcy5pc0Zhc3RhKCkgfHwgdGhpcy5pc1NlcGFyYXRvcigpKSAmJiB0aGlzLnRvSGVsbSh0Z3ROb3RhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VG9IZWxtKCk7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuaXNTZXBhcmF0b3IoKSAmJiB0aGlzLnRvRmFzdGEodGd0Tm90YXRpb24pKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydFNlcGFyYXRvclRvRmFzdGEoKTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc0hlbG0oKSAmJiB0aGlzLnRvRmFzdGEodGd0Tm90YXRpb24pKSAvLyB0aGUgY2FzZSBvZiBIRUxNXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0SGVsbSh0Z3ROb3RhdGlvbik7XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuaXNIZWxtKCkgJiYgdGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0SGVsbSh0Z3ROb3RhdGlvbiwgdGd0U2VwYXJhdG9yKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIGNvbnZlcnNpb24gJyArXG4gICAgICAgICAgICAgICAgYGZyb20gc291cmNlIG5vdGF0aW9uICcke3RoaXMubm90YXRpb259JyB0byB0YXJnZXQgbm90YXRpb24gJyR7dGd0Tm90YXRpb259Jy5gKTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoY29sKSB7XG4gICAgICAgIHN1cGVyKGNvbCk7XG4gICAgICAgIHRoaXMuX3NwbGl0dGVyID0gbnVsbDtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2libTkwWVhScGIyNHRZMjl1ZG1WeWRHVnlMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWJtOTBZWFJwYjI0dFkyOXVkbVZ5ZEdWeUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVWRCTEU5QlFVOHNTMEZCU3l4RlFVRkZMRTFCUVUwc2FVSkJRV2xDTEVOQlFVTTdRVUZGZEVNc1QwRkJUeXhGUVVGRExGbEJRVmtzUlVGQlF5eE5RVUZOTEdsQ1FVRnBRaXhEUVVGRE8wRkJRemRETEU5QlFVOHNSVUZCUXl4dlFrRkJiMElzUlVGQlJTeFJRVUZSTEVWQlFUUkRMRTFCUVUwc2FVSkJRV2xDTEVOQlFVTTdRVUZGTVVjc2FVWkJRV2xHTzBGQlEycEdMRTFCUVUwc1QwRkJUeXhwUWtGQmEwSXNVMEZCVVN4WlFVRlpPMGxCUjJwRUxFbEJRV01zVVVGQlVUdFJRVU53UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhUUVVGVExFdEJRVXNzU1VGQlNUdFpRVU42UWl4SlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExHOUNRVUZ2UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU55UkN4UFFVRlBMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU03U1VGRGVFSXNRMEZCUXp0SlFVVk5MRTlCUVU4c1EwRkJReXhqUVVGM1FpeEpRVUZoTEU5QlFVOHNZMEZCWXl4cFEwRkJiVUlzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGZUVZc1YwRkJWeXhEUVVGRExHTkJRWGRDTEVsQlFXRXNUMEZCVHl4alFVRmpMSGxEUVVGMVFpeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVm9SeXhOUVVGTkxFTkJRVU1zWTBGQmQwSXNTVUZCWVN4UFFVRlBMR05CUVdNc0swSkJRV3RDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlRkR096czdPenM3VDBGTlJ6dEpRVU5MTEhWQ1FVRjFRaXhEUVVGRExGTkJRV2xDTEVWQlFVVXNhVUpCUVdkRExFbEJRVWs3VVVGRGNrWXNTVUZCU1N4alFVRmpMRXRCUVVzc1NVRkJTVHRaUVVONlFpeGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETzFGQlJYcERMRTFCUVUwc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEhORFFVRnZRaXhEUVVGRE8xRkJRM2hFTEhORVFVRnpSRHRSUVVOMFJDeFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJWeXhGUVVGRkxFVkJRVVU3V1VGRE4wSXNUVUZCVFN4WlFVRlpMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRNVU1zVFVGQlRTeHJRa0ZCYTBJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMWxCUTNaRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhyUWtGQmEwSXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlEyeEVMRWxCUVVrc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1kwRkJZenR2UWtGRE1VTXNhMEpCUVd0Q0xFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NXVUZCV1N4RFFVRkRMSE5DUVVGelFpeERRVUZETEZOQlFWTXNRMEZCUXp0aFFVTjZSVHRaUVVORUxFOUJRVThzYTBKQlFXdENMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzFGQlF6VkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMGdzVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzZFVOQlFYRkNMRU5CUVVNN1VVRkRjRVFzVTBGQlV5eERRVUZETEUxQlFVMHNiVU5CUVdsQ0xGTkJRVk1zUTBGQlF5eERRVUZETzFGQlF6VkRMRTlCUVU4c1UwRkJVeXhEUVVGRE8wbEJRMjVDTEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTkxMR1ZCUVdVN1VVRkRja0lzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkRka01zUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdaMEpCUTNoQ0xFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzI5Q1FVTm9ReXhUUVVGVExFTkJRVU1zUTBGQlF5dzJRMEZCTmtNN1VVRkZPVVFzU1VGQlNTeE5RVUZOTEV0QlFVc3NVMEZCVXp0WlFVTjBRaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEdsRFFVRnBReXhEUVVGRExFTkJRVU03VVVGRmNrUXNUVUZCVFN4UFFVRlBMRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRM1pDTEUxQlFVMHNWMEZCVnl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xbEJRM3BETEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zTUVKQlFUQkNPMUZCUTNoRUxFMUJRVTBzV1VGQldTeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMREJDUVVFd1FqdFJRVU16Uml4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRkxGZEJRVmNzUlVGQlJTeFpRVUZaTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1NVRkRkRVFzUTBGQlF6dEpRVVZFTEcxRVFVRnRSRHRKUVVNelF5eHRRa0ZCYlVJc1EwRkRla0lzWVVGQmNVSXNSVUZEY2tJc1pVRkJkVUlzUlVGRGRrSXNUVUZCWXl4RlFVTmtMRmRCUVcxQ0xFVkJRMjVDTEZsQlFXOUNMRVZCUTNCQ0xFOUJRV1U3VVVGRlppeE5RVUZOTEZsQlFWa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETzFGQlEyeEVMRTFCUVUwc1owSkJRV2RDTEVkQlFXRXNXVUZCV1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVlVzUlVGQlJTeEZRVUZGTzFsQlEycEZMRWxCUVVrc1JVRkJSU3hMUVVGTExHVkJRV1U3WjBKQlEzaENMRTlCUVU4c1dVRkJXU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRWxCUVVrc1EwRkJRenM3WjBKQlJXaEVMRTlCUVU4c1IwRkJSeXhYUVVGWExFZEJRVWNzUlVGQlJTeEhRVUZITEZsQlFWa3NSVUZCUlN4RFFVRkRPMUZCUTJoRUxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwZ3NUMEZCVHl4SFFVRkhMRTFCUVUwc1IwRkJSeXhuUWtGQlowSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzVDBGQlR5eEZRVUZGTEVOQlFVTTdTVUZETlVRc1EwRkJRenRKUVVWRU96czdPenM3TzA5QlQwYzdTVUZEU1N4dFFrRkJiVUlzUTBGRGVFSXNZVUZCY1VJc1JVRkRja0lzYTBKQlFXbERMRWxCUVVrN1VVRkZja01zU1VGQlNTeGxRVUZsTEV0QlFVc3NTVUZCU1R0WlFVTXhRaXhsUVVGbExFZEJRVWNzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRE8xRkJRekZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRVZCUVVVc1YwRkJWeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFBRVUZQTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1pVRkJaU3hGUVVGRkxFTkJRVU03VVVGRE5VVXNUMEZCVHl4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNZVUZCWVN4RlFVRkZMR1ZCUVdVc1JVRkJSU3hOUVVGTkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEZsQlFWa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVNNVJ5eERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU3l4aFFVRmhMRU5CUVVNc2EwSkJRV2xETEVsQlFVazdVVUZEZWtRc1NVRkJTU3hsUVVGbExFdEJRVXNzU1VGQlNUdFpRVU14UWl4bFFVRmxMRWRCUVVjc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRPMUZCUlRGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVWQlFVVXNWMEZCVnl4RlFVRkZMRmxCUVZrc1JVRkJSU3hQUVVGUExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RlFVRkZMRU5CUVVNN1VVRkZOVVVzVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc05FSkJRV1VzUTBGQlF6dFJRVU51UkN4M1EwRkJkME03VVVGRGVFTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVmNzUlVGQlJTeEZRVUZGTzFsQlF6ZENMRTFCUVUwc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRek5ETEU5QlFVOHNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeERRVUZETEdGQlFXRXNSVUZCUlN4bFFVRm5RaXhGUVVGRkxFMUJRVTBzUlVGQlJTeFhRVUZYTEVWQlFVVXNXVUZCV1N4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJReTlITEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTBnc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc05rSkJRV2RDTEVOQlFVTTdVVUZETDBNc1QwRkJUeXhUUVVGVExFTkJRVU03U1VGRGJrSXNRMEZCUXp0SlFVVkVPenM3T3p0UFFVdEhPMGxCUTBzc2RVSkJRWFZDTEVOQlFVTXNhVUpCUVdkRExFbEJRVWs3VVVGRGJFVXNTVUZCU1N4alFVRmpMRXRCUVVzc1NVRkJTVHRaUVVONlFpeGpRVUZqTEVkQlFVY3NXVUZCV1N4RFFVRkRMSE5DUVVGelFpeERRVUZETEV0QlFVc3NRMEZCUXp0UlFVVTNSQ3hOUVVGTkxGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N3NFFrRkJaMElzUTBGQlF6dFJRVU53UkN4M1EwRkJkME03VVVGRGVFTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVmNzUlVGQlJTeEZRVUZGTzFsQlF6ZENMRTFCUVUwc1owSkJRV2RDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZET1VNc2MwTkJRWE5ETzFsQlEzUkRMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRPMWxCUXpWRUxFMUJRVTBzYTBKQlFXdENMRWRCUVdFc1JVRkJSU3hEUVVGRE8xbEJRM2hETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eHRRa0ZCYlVJc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUTI1RUxFMUJRVTBzU1VGQlNTeEhRVUZITEcxQ1FVRnRRaXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTndReXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEV0QlFVc3NRMEZCUXl4RlFVRkZPMjlDUVVOeVFpeHJRa0ZCYTBJc1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQlpTeERRVUZETEVOQlFVTTdhVUpCUXpGRE8zRkNRVUZOTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFVkJRVVU3YjBKQlF6RkNMSGREUVVGM1F6dHZRa0ZEZUVNc1RVRkJUU3hQUVVGUExFZEJRVWNzUjBGQlJ5eEhRVUZITEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNN2IwSkJRMnBETEd0Q1FVRnJRaXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0cFFrRkRiRU03Y1VKQlFVMDdiMEpCUTB3c2EwSkJRV3RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8ybENRVU12UWp0aFFVTkdPMWxCUTBRc1QwRkJUeXhyUWtGQmEwSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VVVGRGNrTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRTQ3hUUVVGVExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXdyUWtGQmFVSXNRMEZCUXp0UlFVTm9SQ3hQUVVGUExGTkJRVk1zUTBGQlF6dEpRVU51UWl4RFFVRkRPMGxCUlVRN096czdPenM3TzA5QlVVYzdTVUZEU3l4WFFVRlhMRU5CUVVNc1YwRkJiVUlzUlVGQlJTeFpRVUZ4UWl4RlFVRkZMRmxCUVhGQ08xRkJRMjVHTEcxRlFVRnRSVHRSUVVOdVJTeDNSVUZCZDBVN1VVRkRlRVVzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlR0WlFVTnFRaXhaUVVGWkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVhWQ0xFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTNSRUxGbEJRVmtzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dG5Ra0ZETTBNc1dVRkJXU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRk5CUVZNc1EwRkJRenRUUVVOcVJEdFJRVVZFTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVN1dVRkRha0lzV1VGQldTeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhYUVVGMVFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRPMU5CUXpsRk8xRkJSVVFzVFVGQlRTeGpRVUZqTEVkQlFVY3NhVUpCUVdsQ0xFTkJRVU03VVVGRGVrTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eFhRVUYxUWl4RFFVRkRMRU5CUVVNN1VVRkROMFFzZDBOQlFYZERPMUZCUTNoRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRlhMRVZCUVVVc1JVRkJSVHRaUVVNM1FpeE5RVUZOTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVVjZReXh0UlVGQmJVVTdXVUZEYmtVc2JVVkJRVzFGTzFsQlEyNUZMREJEUVVFd1F6dFpRVU14UXl4TlFVRk5MRmxCUVZrc1IwRkJSeXhYUVVGWExFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRmRCUVZjc1EwRkJReXhWUVVGVkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdXVUZGY0VZc2FVTkJRV2xETzFsQlEycERMRTFCUVUwc1kwRkJZeXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNN1dVRkRiRVFzVFVGQlRTeG5Ra0ZCWjBJc1IwRkJZU3hGUVVGRkxFTkJRVU03V1VGRGRFTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEdOQlFXTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlF6bERMRWxCUVVrc1NVRkJTU3hIUVVGSExHTkJRV01zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkROMElzU1VGQlNTeFpRVUZaTzI5Q1FVTmtMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEdOQlFXTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRuUWtGRE1VTXNTVUZCU1N4SlFVRkpMRXRCUVVzc1dVRkJXU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRWxCUVVrc1JVRkJSVHR2UWtGRGNrUXNaMEpCUVdkQ0xFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFXRXNRMEZCUXl4RFFVRkRPMmxDUVVOMFF6dHhRa0ZCVFN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVjBGQmRVSXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzI5Q1FVTnVSU3d5UkVGQk1rUTdiMEpCUXpORUxFMUJRVTBzVDBGQlR5eEhRVUZITEVkQlFVY3NSMEZCUnl4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRE8yOUNRVU5xUXl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN2FVSkJRMmhETzNGQ1FVRk5PMjlDUVVOTUxHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dHBRa0ZETjBJN1lVRkRSanRaUVVORUxFOUJRVThzWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eERRVUZETzFGQlF6ZERMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSVWdzYVVaQlFXbEdPMUZCUTJwR0xFMUJRVTBzVVVGQlVTeEhRVUZwUWl4dlFrRkJiMElzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0UlFVTXZSQ3hOUVVGTkxFdEJRVXNzUjBGQlowSXNVVUZCVVN4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFVkJRVVVzVVVGQlVTeERRVUZETEVOQlFVTTdVVUZETlVRc1RVRkJUU3hQUVVGUExFZEJRVWNzUzBGQlN5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTTdVVUZEY2tRc1UwRkJVeXhEUVVGRExFMUJRVTBzSzBKQlFXVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkZlRU1zVDBGQlR5eFRRVUZUTEVOQlFVTTdTVUZEYmtJc1EwRkJRenRKUVVWUExITkNRVUZ6UWp0UlFVTTFRaXhwUkVGQmFVUTdVVUZEYWtRc1QwRkJUeXhKUVVGSkxFTkJRVU1zV1VGQldTeHpRMEZCYjBJc1EwRkJRenRKUVVNdlF5eERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU1N4UFFVRlBMRU5CUVVNc1YwRkJjVUlzUlVGQlJTeGxRVUU0UWl4SlFVRkpPMUZCUTNSRkxITkNRVUZ6UWp0UlFVTjBRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTEV0QlFVc3NWMEZCVnp0WlFVTXZRaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEhsQ1FVRjVRaXhEUVVGRExFTkJRVU03VVVGRE4wTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEZsQlFWa3NTMEZCU3l4SlFVRkpPMWxCUTNoRUxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNaME5CUVdkRExFTkJRVU1zUTBGQlF6dFJRVVZ3UkN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmRCUVZjc1EwRkJReXhKUVVGSkxGbEJRVmtzUzBGQlN5eEpRVUZKTzFsQlF6RkZMRTlCUVU4c1NVRkJTU3hEUVVGRExIVkNRVUYxUWl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8yRkJReTlETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFbEJRVWtzU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVOQlFVTTdXVUZEZWtVc1QwRkJUeXhKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTEVOQlFVTTdZVUZEZWtJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhYUVVGWExFTkJRVU03V1VGRGRFUXNUMEZCVHl4SlFVRkpMRU5CUVVNc2RVSkJRWFZDTEVWQlFVVXNRMEZCUXp0aFFVTnVReXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGZEJRVmNzUTBGQlF5eEZRVUZGTEcxQ1FVRnRRanRaUVVOMFJTeFBRVUZQTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU03WVVGRGJFTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4WFFVRlhMRU5CUVVNN1dVRkRja1FzVDBGQlR5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmRCUVZjc1JVRkJSU3haUVVGaExFTkJRVU1zUTBGQlF6czdXVUZGY0VRc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5d3lRa0ZCTWtJN1owSkJRM3BETEhsQ1FVRjVRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeDVRa0ZCZVVJc1YwRkJWeXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU4wUml4RFFVRkRPMGxCUlVRc1dVRkJiVUlzUjBGQll6dFJRVU12UWl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVFM1VFd3NZMEZCVXl4SFFVRjNRaXhKUVVGSkxFTkJRVU03U1VFNFVEbERMRU5CUVVNN1EwRkRSaUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUlFUnZJRzV2ZENCamFHRnVaMlVnZEdobGMyVWdhVzF3YjNKMElHeHBibVZ6SUhSdklHMWhkR05vSUdWNGRHVnlibUZzSUcxdlpIVnNaWE1nYVc0Z2QyVmljR0ZqYXlCamIyNW1hV2QxY21GMGFXOXVJQ292WEc1cGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklIVnBJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzkxYVNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJFUnlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlpHY25PMXh1WEc1cGJYQnZjblFnZTFWdWFYUnpTR0Z1Wkd4bGNuMGdabkp2YlNBbkxpOTFibWwwY3kxb1lXNWtiR1Z5Snp0Y2JtbHRjRzl5ZENCN1oyVjBVM0JzYVhSMFpYSkdiM0pEYjJ4MWJXNHNJR2RsZEZOMFlYUnpMQ0JPVDFSQlZFbFBUaXdnVTJWeFEyOXNVM1JoZEhNc0lGTndiR2wwZEdWeVJuVnVZeXdnVkVGSFUzMGdabkp2YlNBbkxpOXRZV055YjIxdmJHVmpkV3hsSnp0Y2JseHVMeW9xSUVOc1lYTnpJR1p2Y2lCb1lXNWtiR2x1WnlCamIyNTJaWEp6YVc5dUlHOW1JRzV2ZEdGMGFXOXVJSE41YzNSbGJYTWdhVzRnVFdGamNtOXRiMnhsWTNWc1pTQmpiMngxYlc1eklDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1RtOTBZWFJwYjI1RGIyNTJaWEowWlhJZ1pYaDBaVzVrY3lCVmJtbDBjMGhoYm1Sc1pYSWdlMXh1SUNCd2NtbDJZWFJsSUY5emNHeHBkSFJsY2pvZ1UzQnNhWFIwWlhKR2RXNWpJSHdnYm5Wc2JDQTlJRzUxYkd3N1hHNWNiaUFnY0hKdmRHVmpkR1ZrSUdkbGRDQnpjR3hwZEhSbGNpZ3BPaUJUY0d4cGRIUmxja1oxYm1NZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TGw5emNHeHBkSFJsY2lBOVBUMGdiblZzYkNsY2JpQWdJQ0FnSUhSb2FYTXVYM053YkdsMGRHVnlJRDBnWjJWMFUzQnNhWFIwWlhKR2IzSkRiMngxYlc0b2RHaHBjeTVqYjJ4MWJXNHBPMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDl6Y0d4cGRIUmxjanRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUIwYjBaaGMzUmhLSFJoY21kbGRFNXZkR0YwYVc5dU9pQk9UMVJCVkVsUFRpazZJR0p2YjJ4bFlXNGdleUJ5WlhSMWNtNGdkR0Z5WjJWMFRtOTBZWFJwYjI0Z1BUMDlJRTVQVkVGVVNVOU9Ma1pCVTFSQk95QjlYRzVjYmlBZ2NIVmliR2xqSUhSdlUyVndZWEpoZEc5eUtIUmhjbWRsZEU1dmRHRjBhVzl1T2lCT1QxUkJWRWxQVGlrNklHSnZiMnhsWVc0Z2V5QnlaWFIxY200Z2RHRnlaMlYwVG05MFlYUnBiMjRnUFQwOUlFNVBWRUZVU1U5T0xsTkZVRUZTUVZSUFVqc2dmVnh1WEc0Z0lIQjFZbXhwWXlCMGIwaGxiRzBvZEdGeVoyVjBUbTkwWVhScGIyNDZJRTVQVkVGVVNVOU9LVG9nWW05dmJHVmhiaUI3SUhKbGRIVnliaUIwWVhKblpYUk9iM1JoZEdsdmJpQTlQVDBnVGs5VVFWUkpUMDR1U0VWTVRUc2dmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRiMjUyWlhKMElHRWdUV0ZqY205dGIyeGxZM1ZzWlNCamIyeDFiVzRnWm5KdmJTQkdRVk5VUVNCMGJ5QlRSVkJCVWtGVVQxSWdibTkwWVhScGIyNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSE5sY0dGeVlYUnZjaUFnUVNCemNHVmphV1pwWXlCelpYQmhjbUYwYjNJZ2RHOGdZbVVnZFhObFpGeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnWm1GemRHRkhZWEJUZVcxaWIyd2dJRWRoY0NCemVXMWliMndnYVc0Z1JrRlRWRUVzSUNjdEp5QmllU0JrWldaaGRXeDBYRzRnSUNBcUlFQnlaWFIxY200Z2UwUkhMa052YkhWdGJuMGdJQ0FnSUNBZ0lFRWdibVYzSUdOdmJIVnRiaUJwYmlCVFJWQkJVa0ZVVDFJZ2JtOTBZWFJwYjI1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1kyOXVkbVZ5ZEVaaGMzUmhWRzlUWlhCaGNtRjBiM0lvYzJWd1lYSmhkRzl5T2lCemRISnBibWNzSUdaaGMzUmhSMkZ3VTNsdFltOXNPaUJ6ZEhKcGJtY2dmQ0J1ZFd4c0lEMGdiblZzYkNrNklFUkhMa052YkhWdGJpQjdYRzRnSUNBZ2FXWWdLR1poYzNSaFIyRndVM2x0WW05c0lEMDlQU0J1ZFd4c0tWeHVJQ0FnSUNBZ1ptRnpkR0ZIWVhCVGVXMWliMndnUFNCMGFHbHpMbVJsWm1GMWJIUkhZWEJUZVcxaWIydzdYRzVjYmlBZ0lDQmpiMjV6ZENCdVpYZERiMngxYlc0Z1BTQjBhR2x6TG1kbGRFNWxkME52YkhWdGJpaE9UMVJCVkVsUFRpNVRSVkJCVWtGVVQxSXBPMXh1SUNBZ0lDOHZJR0Z6YzJsbmJpQjBhR1VnZG1Gc2RXVnpJSFJ2SUhSb1pTQnVaWGRzZVNCamNtVmhkR1ZrSUdWdGNIUjVJR052YkhWdGJseHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1cGJtbDBLQ2hwWkhnNklHNTFiV0psY2lrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ1ptRnpkR0ZRYjJ4NWJXVnlJRDBnZEdocGN5NWpiMngxYlc0dVoyVjBLR2xrZUNrN1hHNGdJQ0FnSUNCamIyNXpkQ0JtWVhOMFlVMXZibTl0WlhKelFYSnlZWGtnUFNCMGFHbHpMbk53YkdsMGRHVnlLR1poYzNSaFVHOXNlVzFsY2lrN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHWmhjM1JoVFc5dWIyMWxjbk5CY25KaGVTNXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9abUZ6ZEdGTmIyNXZiV1Z5YzBGeWNtRjVXMmxkSUQwOVBTQm1ZWE4wWVVkaGNGTjViV0p2YkNsY2JpQWdJQ0FnSUNBZ0lDQm1ZWE4wWVUxdmJtOXRaWEp6UVhKeVlYbGJhVjBnUFNCVmJtbDBjMGhoYm1Sc1pYSXVYMlJsWm1GMWJIUkhZWEJUZVcxaWIyeHpSR2xqZEM1VFJWQkJVa0ZVVDFJN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnWm1GemRHRk5iMjV2YldWeWMwRnljbUY1TG1wdmFXNG9jMlZ3WVhKaGRHOXlLVHRjYmlBZ0lDQjlLVHRjYmlBZ0lDQnVaWGREYjJ4MWJXNHVjMlYwVkdGbktFUkhMbFJCUjFNdVZVNUpWRk1zSUU1UFZFRlVTVTlPTGxORlVFRlNRVlJQVWlrN1hHNGdJQ0FnYm1WM1EyOXNkVzF1TG5ObGRGUmhaeWhVUVVkVExuTmxjR0Z5WVhSdmNpd2djMlZ3WVhKaGRHOXlLVHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNRMjlzZFcxdU8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRWRsZENCMGFHVWdkM0poY0hCbGNpQnpkSEpwYm1keklHWnZjaUJJUlV4TkxDQmtaWEJsYm1ScGJtY2diMjRnZEdobElIUjVjR1VnYjJZZ2RHaGxYRzRnSUNBcUlHMWhZM0p2Ylc5c1pXTjFiR1VnS0hCbGNIUnBaR1VzSUVST1FTd2dVazVCS1Z4dUlDQWdLbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kYlhYMGdRWEp5WVhrZ2IyWWdkM0poY0hCbGNuTmNiaUFnSUNvdlhHNGdJSEJ5YVhaaGRHVWdaMlYwU0dWc2JWZHlZWEJ3WlhKektDazZJSE4wY21sdVoxdGRJSHRjYmlBZ0lDQmpiMjV6ZENCd2NtVm1hWGdnUFNBb2RHaHBjeTVwYzBSdVlTZ3BLU0EvSUNkRVRrRXhleWNnT2x4dUlDQWdJQ0FnS0hSb2FYTXVhWE5TYm1Fb0tTa2dQeUFuVWs1Qk1Yc25JRHBjYmlBZ0lDQWdJQ0FnS0hSb2FYTXVhWE5RWlhCMGFXUmxLQ2twSUQ4Z0oxQkZVRlJKUkVVeGV5Y2dPbHh1SUNBZ0lDQWdJQ0FnSUNkVmJtdHViM2R1SnpzZ0x5OGdkR2hwY3lCallYTmxJSE5vYjNWc1pDQmlaU0JvWVc1a2JHVmtJR0Z6SUdWNFkyVndkR2x2Ym1Gc1hHNWNiaUFnSUNCcFppQW9jSEpsWm1sNElEMDlQU0FuVlc1cmJtOTNiaWNwWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMDVsYVhSb1pYSWdjR1Z3ZEdsa1pTd2dibTl5SUc1MVkyeGxiM1JwWkdVbktUdGNibHh1SUNBZ0lHTnZibk4wSUhCdmMzUm1hWGdnUFNBbmZTUWtKQ2M3WEc0Z0lDQWdZMjl1YzNRZ2JHVm1kRmR5WVhCd1pYSWdQU0FvZEdocGN5NXBjMFJ1WVNncEtTQS9JQ2RFS0NjZ09seHVJQ0FnSUNBZ0tIUm9hWE11YVhOU2JtRW9LU2tnUHlBblVpZ25JRG9nSnljN0lDOHZJRzV2SUhkeVlYQndaWElnWm05eUlIQmxjSFJwWkdWelhHNGdJQ0FnWTI5dWMzUWdjbWxuYUhSWGNtRndjR1Z5SUQwZ0tIUm9hWE11YVhORWJtRW9LU0I4ZkNCMGFHbHpMbWx6VW01aEtDa3BJRDhnSnlsUUp5QTZJQ2NuT3lBdkx5QnVieUIzY21Gd2NHVnlJR1p2Y2lCd1pYQjBhV1JsYzF4dUlDQWdJSEpsZEhWeWJpQmJjSEpsWm1sNExDQnNaV1owVjNKaGNIQmxjaXdnY21sbmFIUlhjbUZ3Y0dWeUxDQndiM04wWm1sNFhUdGNiaUFnZlZ4dVhHNGdJQzh2SUVFZ2FHVnNjR1Z5SUdaMWJtTjBhVzl1SUdadmNpQmpiMjUyWlhKMGFXNW5JSE4wY21sdVozTWdkRzhnU0VWTVRWeHVJQ0J3Y21sMllYUmxJR052Ym5abGNuUlViMGhsYkcxSVpXeHdaWElvWEc0Z0lDQWdjMjkxY21ObFVHOXNlVzFsY2pvZ2MzUnlhVzVuTEZ4dUlDQWdJSE52ZFhKalpVZGhjRk41YldKdmJEb2djM1J5YVc1bkxGeHVJQ0FnSUhCeVpXWnBlRG9nYzNSeWFXNW5MRnh1SUNBZ0lHeGxablJYY21Gd2NHVnlPaUJ6ZEhKcGJtY3NYRzRnSUNBZ2NtbG5hSFJYY21Gd2NHVnlPaUJ6ZEhKcGJtY3NYRzRnSUNBZ2NHOXpkR1pwZURvZ2MzUnlhVzVuWEc0Z0lDazZJSE4wY21sdVp5QjdYRzRnSUNBZ1kyOXVjM1FnYlc5dWIyMWxja0Z5Y21GNUlEMGdkR2hwY3k1emNHeHBkSFJsY2loemIzVnlZMlZRYjJ4NWJXVnlLVHRjYmlBZ0lDQmpiMjV6ZENCdGIyNXZiV1Z5U0dWc2JVRnljbUY1T2lCemRISnBibWRiWFNBOUlHMXZibTl0WlhKQmNuSmhlUzV0WVhBb0tHMXRPaUJ6ZEhKcGJtY3BJRDArSUh0Y2JpQWdJQ0FnSUdsbUlDaHRiU0E5UFQwZ2MyOTFjbU5sUjJGd1UzbHRZbTlzS1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnVlc1cGRITklZVzVrYkdWeUxsOWtaV1poZFd4MFIyRndVM2x0WW05c2MwUnBZM1F1U0VWTVRUdGNiaUFnSUNBZ0lHVnNjMlZjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR0FrZTJ4bFpuUlhjbUZ3Y0dWeWZTUjdiVzE5Skh0eWFXZG9kRmR5WVhCd1pYSjlZRHRjYmlBZ0lDQjlLVHRjYmlBZ0lDQnlaWFIxY200Z1lDUjdjSEpsWm1sNGZTUjdiVzl1YjIxbGNraGxiRzFCY25KaGVTNXFiMmx1S0NjdUp5bDlKSHR3YjNOMFptbDRmV0E3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1EyOXVkbVZ5ZENCaElITjBjbWx1WnlCM2FYUm9JRk5GVUVGU1FWUlBVaTlHUVZOVVFTQnViM1JoZEdsdmJpQjBieUJJUlV4TlhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnpiM1Z5WTJWUWIyeDViV1Z5SUNCQklITjBjbWx1WnlCMGJ5QmlaU0JqYjI1MlpYSjBaV1JjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1jZ2ZDQnVkV3hzZlNCemIzVnlZMlZIWVhCVGVXMWliMndnSUVGdUlHOXdkR2x2Ym1Gc0lHZGhjQ0J6ZVcxaWIyd3NJSE5sZENCMGIxeHVJQ0FnS2lCa1pXWmhkV3gwSUhaaGJIVmxjeUFvSnkwbklHWnZjaUJHUVZOVVFTQmhibVFnSnljZ1ptOXlJRk5GVUVGU1FWUlBVaWtnZFc1c1pYTnpJSE53WldOcFptbGxaRnh1SUNBZ0tpQkFjbVYwZFhKdUlIdHpkSEpwYm1kOUlDQlVhR1VnZEdGeVoyVjBJRWhGVEUwZ2MzUnlhVzVuWEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWTI5dWRtVnlkRk4wY21sdVoxUnZTR1ZzYlNoY2JpQWdJQ0J6YjNWeVkyVlFiMng1YldWeU9pQnpkSEpwYm1jc1hHNGdJQ0FnYzI5MWNtTmxSMkZ3VTNsdFltOXNPaUJ6ZEhKcGJtY2dmQ0J1ZFd4c0lEMGdiblZzYkZ4dUlDQXBPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lHbG1JQ2h6YjNWeVkyVkhZWEJUZVcxaWIyd2dQVDA5SUc1MWJHd3BYRzRnSUNBZ0lDQnpiM1Z5WTJWSFlYQlRlVzFpYjJ3Z1BTQjBhR2x6TG1SbFptRjFiSFJIWVhCVGVXMWliMnc3WEc0Z0lDQWdZMjl1YzNRZ1czQnlaV1pwZUN3Z2JHVm1kRmR5WVhCd1pYSXNJSEpwWjJoMFYzSmhjSEJsY2l3Z2NHOXpkR1pwZUYwZ1BTQjBhR2x6TG1kbGRFaGxiRzFYY21Gd2NHVnljeWdwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1OdmJuWmxjblJVYjBobGJHMUlaV3h3WlhJb2MyOTFjbU5sVUc5c2VXMWxjaXdnYzI5MWNtTmxSMkZ3VTNsdFltOXNMQ0J3Y21WbWFYZ3NJR3hsWm5SWGNtRndjR1Z5TENCeWFXZG9kRmR5WVhCd1pYSXNJSEJ2YzNSbWFYZ3BPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOdmJuWmxjblFnWVNCamIyeDFiVzRnZEc4Z1NFVk1UVnh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaeUI4SUc1MWJHeDlJSE52ZFhKalpVZGhjRk41YldKdmJGeHVJQ0FnS2lCQWNtVjBkWEp1SUh0RVJ5NURiMngxYlc1OVhHNGdJQ0FxTDF4dUlDQndjbWwyWVhSbElHTnZiblpsY25SVWIwaGxiRzBvYzI5MWNtTmxSMkZ3VTNsdFltOXNPaUJ6ZEhKcGJtY2dmQ0J1ZFd4c0lEMGdiblZzYkNrNklFUkhMa052YkhWdGJpQjdYRzRnSUNBZ2FXWWdLSE52ZFhKalpVZGhjRk41YldKdmJDQTlQVDBnYm5Wc2JDbGNiaUFnSUNBZ0lITnZkWEpqWlVkaGNGTjViV0p2YkNBOUlIUm9hWE11WkdWbVlYVnNkRWRoY0ZONWJXSnZiRHRjYmx4dUlDQWdJR052Ym5OMElGdHdjbVZtYVhnc0lHeGxablJYY21Gd2NHVnlMQ0J5YVdkb2RGZHlZWEJ3WlhJc0lIQnZjM1JtYVhoZElEMGdkR2hwY3k1blpYUklaV3h0VjNKaGNIQmxjbk1vS1R0Y2JseHVJQ0FnSUdOdmJuTjBJRzVsZDBOdmJIVnRiaUE5SUhSb2FYTXVaMlYwVG1WM1EyOXNkVzF1S0U1UFZFRlVTVTlPTGtoRlRFMHBPMXh1SUNBZ0lDOHZJR0Z6YzJsbmJpQjBhR1VnZG1Gc2RXVnpJSFJ2SUhSb1pTQmxiWEIwZVNCamIyeDFiVzVjYmlBZ0lDQnVaWGREYjJ4MWJXNHVhVzVwZENnb2FXUjRPaUJ1ZFcxaVpYSXBJRDArSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJSE52ZFhKalpWQnZiSGx0WlhJZ1BTQjBhR2x6TG1OdmJIVnRiaTVuWlhRb2FXUjRLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG1OdmJuWmxjblJVYjBobGJHMUlaV3h3WlhJb2MyOTFjbU5sVUc5c2VXMWxjaXdnYzI5MWNtTmxSMkZ3VTNsdFltOXNJU3dnY0hKbFptbDRMQ0JzWldaMFYzSmhjSEJsY2l3Z2NtbG5hSFJYY21Gd2NHVnlMQ0J3YjNOMFptbDRLVHRjYmlBZ0lDQjlLVHRjYmlBZ0lDQnVaWGREYjJ4MWJXNHVjMlYwVkdGbktFUkhMbFJCUjFNdVZVNUpWRk1zSUU1UFZFRlVTVTlPTGtoRlRFMHBPMXh1SUNBZ0lISmxkSFZ5YmlCdVpYZERiMngxYlc0N1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRMjl1ZG1WeWRDQlRSVkJCVWtGVVQxSWdZMjlzZFcxdUlIUnZJRVpCVTFSQklHNXZkR0YwYVc5dVhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bklId2diblZzYkgwZ1ptRnpkR0ZIWVhCVGVXMWliMndnVDNCMGFXOXVZV3dnWjJGd0lITjViV0p2YkNCbWIzSWdSa0ZUVkVGY2JpQWdJQ29nUUhKbGRIVnliaUI3UkVjdVEyOXNkVzF1ZlNBZ1EyOXVkbVZ5ZEdWa0lHTnZiSFZ0Ymx4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCamIyNTJaWEowVTJWd1lYSmhkRzl5Vkc5R1lYTjBZU2htWVhOMFlVZGhjRk41YldKdmJEb2djM1J5YVc1bklId2diblZzYkNBOUlHNTFiR3dwT2lCRVJ5NURiMngxYlc0Z2UxeHVJQ0FnSUdsbUlDaG1ZWE4wWVVkaGNGTjViV0p2YkNBOVBUMGdiblZzYkNsY2JpQWdJQ0FnSUdaaGMzUmhSMkZ3VTNsdFltOXNJRDBnVlc1cGRITklZVzVrYkdWeUxsOWtaV1poZFd4MFIyRndVM2x0WW05c2MwUnBZM1F1UmtGVFZFRTdYRzVjYmlBZ0lDQmpiMjV6ZENCdVpYZERiMngxYlc0Z1BTQjBhR2x6TG1kbGRFNWxkME52YkhWdGJpaE9UMVJCVkVsUFRpNUdRVk5VUVNrN1hHNGdJQ0FnTHk4Z1lYTnphV2R1SUhSb1pTQjJZV3gxWlhNZ2RHOGdkR2hsSUdWdGNIUjVJR052YkhWdGJseHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1cGJtbDBLQ2hwWkhnNklHNTFiV0psY2lrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2MyVndZWEpoZEc5eVVHOXNlVzFsY2lBOUlIUm9hWE11WTI5c2RXMXVMbWRsZENocFpIZ3BPMXh1SUNBZ0lDQWdMeThnYVhSbGJYTWdZMkZ1SUdKbElHMXZibTl0WlhKeklHOXlJSE5sY0dGeVlYUnZjbk5jYmlBZ0lDQWdJR052Ym5OMElITmxjR0Z5WVhSdmNrbDBaVzF6UVhKeVlYa2dQU0IwYUdsekxuTndiR2wwZEdWeUtITmxjR0Z5WVhSdmNsQnZiSGx0WlhJcE8xeHVJQ0FnSUNBZ1kyOXVjM1FnWm1GemRHRk5iMjV2YldWeWMwRnljbUY1T2lCemRISnBibWRiWFNBOUlGdGRPMXh1SUNBZ0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J6WlhCaGNtRjBiM0pKZEdWdGMwRnljbUY1TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHbDBaVzBnUFNCelpYQmhjbUYwYjNKSmRHVnRjMEZ5Y21GNVcybGRPMXh1SUNBZ0lDQWdJQ0JwWmlBb2FYUmxiUzVzWlc1bmRHZ2dQVDA5SURBcElIdGNiaUFnSUNBZ0lDQWdJQ0JtWVhOMFlVMXZibTl0WlhKelFYSnlZWGt1Y0hWemFDaG1ZWE4wWVVkaGNGTjViV0p2YkNFcE8xeHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLR2wwWlcwdWJHVnVaM1JvSUQ0Z01Ta2dlMXh1SUNBZ0lDQWdJQ0FnSUM4dklIUm9aU0JqWVhObElHOW1JR0VnYlhWc2RHa3RZMmhoY21GamRHVnlJRzF2Ym05dFpYSmNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnRiMjV2YldWeUlEMGdKMXNuSUNzZ2FYUmxiU0FySUNkZEp6dGNiaUFnSUNBZ0lDQWdJQ0JtWVhOMFlVMXZibTl0WlhKelFYSnlZWGt1Y0hWemFDaHRiMjV2YldWeUtUdGNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0JtWVhOMFlVMXZibTl0WlhKelFYSnlZWGt1Y0hWemFDaHBkR1Z0S1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUdaaGMzUmhUVzl1YjIxbGNuTkJjbkpoZVM1cWIybHVLQ2NuS1R0Y2JpQWdJQ0I5S1R0Y2JpQWdJQ0J1WlhkRGIyeDFiVzR1YzJWMFZHRm5LRVJITGxSQlIxTXVWVTVKVkZNc0lFNVBWRUZVU1U5T0xrWkJVMVJCS1R0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzUTI5c2RXMXVPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUNCRGIyNTJaWEowSUVoRlRFMGdZMjlzZFcxdUlIUnZJRVpCVTFSQkwxTkZVRUZTUVZSUFVseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdkR2QwVG05MFlYUnBiMjRnSUNBZ1ZHRnlaMlYwSUc1dmRHRjBhVzl1T2lCR1FWTlVRU0J2Y2lCVFJWQkJVa0ZVVDFKY2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSFJuZEZObGNHRnlZWFJ2Y2lBZ0lFOXdkR2x2Ym1Gc0lIUmhjbWRsZENCelpYQmhjbUYwYjNJZ0tHWnZjaUJJUlV4TklDMCtYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuSUh3Z2JuVnNiSDBnZEdkMFIyRndVM2x0WW05c0lDQWdUM0IwYVc5dVlXd2dkR0Z5WjJWMElHZGhjQ0J6ZVcxaWIyeGNiaUFnSUNvZ1UwVlFRVkpCVkU5U0tWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0RVJ5NURiMngxYlc1OUlFTnZiblpsY25SbFpDQmpiMngxYlc1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1kyOXVkbVZ5ZEVobGJHMG9kR2QwVG05MFlYUnBiMjQ2SUhOMGNtbHVaeXdnZEdkMFUyVndZWEpoZEc5eVB6b2djM1J5YVc1bkxDQjBaM1JIWVhCVGVXMWliMncvT2lCemRISnBibWNwT2lCRVJ5NURiMngxYlc0Z2UxeHVJQ0FnSUM4dklGUm9hWE1nWm5WdVkzUnBiMjRnYlhWemRDQnViM1FnWTI5dWRHRnBiaUJqWVd4c2N5QnZaaUJwYzBSdVlTZ3BJR0Z1WkNCcGMxSnVZU2dwTENCbWIzSmNiaUFnSUNBdkx5QnpiM1Z5WTJVZ2FHVnNiU0JqYjJ4MWJXNXpJRzFoZVNCamIyNTBZV2x1SUZKT1FTd2dSRTVCSUdGdVpDQlFWQ0JoWTNKdmMzTWdaR2xtWm1WeVpXNTBJSEp2ZDNOY2JpQWdJQ0JwWmlBb0lYUm5kRWRoY0ZONWJXSnZiQ2tnZTF4dUlDQWdJQ0FnZEdkMFIyRndVM2x0WW05c0lEMGdLSFJvYVhNdWRHOUdZWE4wWVNoMFozUk9iM1JoZEdsdmJpQmhjeUJPVDFSQlZFbFBUaWtwSUQ5Y2JpQWdJQ0FnSUNBZ1ZXNXBkSE5JWVc1a2JHVnlMbDlrWldaaGRXeDBSMkZ3VTNsdFltOXNjMFJwWTNRdVJrRlRWRUVnT2x4dUlDQWdJQ0FnSUNCVmJtbDBjMGhoYm1Sc1pYSXVYMlJsWm1GMWJIUkhZWEJUZVcxaWIyeHpSR2xqZEM1VFJWQkJVa0ZVVDFJN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDRjBaM1JUWlhCaGNtRjBiM0lwSUh0Y2JpQWdJQ0FnSUhSbmRGTmxjR0Z5WVhSdmNpQTlJQ2gwYUdsekxuUnZSbUZ6ZEdFb2RHZDBUbTkwWVhScGIyNGdZWE1nVGs5VVFWUkpUMDRwS1NBL0lDY25JRG9nZEdocGN5NXpaWEJoY21GMGIzSTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnYUdWc2JWZHlZWEJ3WlhKelVtVWdQU0F2S0ZKY1hDaDhSRnhjS0h4Y1hDbDhVQ2t2Wnp0Y2JpQWdJQ0JqYjI1emRDQnVaWGREYjJ4MWJXNGdQU0IwYUdsekxtZGxkRTVsZDBOdmJIVnRiaWgwWjNST2IzUmhkR2x2YmlCaGN5Qk9UMVJCVkVsUFRpazdYRzRnSUNBZ0x5OGdZWE56YVdkdUlIUm9aU0IyWVd4MVpYTWdkRzhnZEdobElHVnRjSFI1SUdOdmJIVnRibHh1SUNBZ0lHNWxkME52YkhWdGJpNXBibWwwS0NocFpIZzZJRzUxYldKbGNpa2dQVDRnZTF4dUlDQWdJQ0FnWTI5dWMzUWdhR1ZzYlZCdmJIbHRaWElnUFNCMGFHbHpMbU52YkhWdGJpNW5aWFFvYVdSNEtUdGNibHh1SUNBZ0lDQWdMeThnZDJVZ1kyRnVibTkwSUhWelpTQnBjMFJ1WVNncElHOXlJR2x6VW01aEtDa2dZbVZqWVhWelpTQnpiM1Z5WTJVZ2FHVnNiU0JqYjJ4MWJXNXpJR05oYmx4dUlDQWdJQ0FnTHk4Z1kyOXVkR0ZwYmlCRVRrRXNJRkpPUVNCaGJtUWdVRlFnYVc0Z1pHbG1abVZ5Wlc1MElHTmxiR3h6TENCemJ5QjBhR1VnWTI5eWNtVnpjRzl1WkdsdVoxeHVJQ0FnSUNBZ0x5OGdkR0ZuY3lCallXNXViM1FnWW1VZ2MyVjBJR1p2Y2lCMGFHVWdkMmh2YkdVZ1kyOXNkVzF1WEc0Z0lDQWdJQ0JqYjI1emRDQnBjMDUxWTJ4bGIzUnBaR1VnUFNCb1pXeHRVRzlzZVcxbGNpNXpkR0Z5ZEhOWGFYUm9LQ2RFVGtFbktTQjhmQ0JvWld4dFVHOXNlVzFsY2k1emRHRnlkSE5YYVhSb0tDZFNUa0VuS1R0Y2JseHVJQ0FnSUNBZ0x5OGdhWFJsYlhNZ1kyRnVJR0psSUcxdmJtOXRaWEp6SUc5eUlHaGxiRzF6WEc0Z0lDQWdJQ0JqYjI1emRDQm9aV3h0U1hSbGJYTkJjbkpoZVNBOUlIUm9hWE11YzNCc2FYUjBaWElvYUdWc2JWQnZiSGx0WlhJcE8xeHVJQ0FnSUNBZ1kyOXVjM1FnZEdkMFRXOXViMjFsY25OQmNuSmhlVG9nYzNSeWFXNW5XMTBnUFNCYlhUdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dhR1ZzYlVsMFpXMXpRWEp5WVhrdWJHVnVaM1JvT3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnYkdWMElHbDBaVzBnUFNCb1pXeHRTWFJsYlhOQmNuSmhlVnRwWFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLR2x6VG5WamJHVnZkR2xrWlNsY2JpQWdJQ0FnSUNBZ0lDQnBkR1Z0SUQwZ2FYUmxiUzV5WlhCc1lXTmxLR2hsYkcxWGNtRndjR1Z5YzFKbExDQW5KeWs3WEc0Z0lDQWdJQ0FnSUdsbUlDaHBkR1Z0SUQwOVBTQlZibWwwYzBoaGJtUnNaWEl1WDJSbFptRjFiSFJIWVhCVGVXMWliMnh6UkdsamRDNUlSVXhOS1NCN1hHNGdJQ0FnSUNBZ0lDQWdkR2QwVFc5dWIyMWxjbk5CY25KaGVTNXdkWE5vS0hSbmRFZGhjRk41YldKdmJDRXBPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0hSb2FYTXVkRzlHWVhOMFlTaDBaM1JPYjNSaGRHbHZiaUJoY3lCT1QxUkJWRWxQVGlrZ0ppWWdhWFJsYlM1c1pXNW5kR2dnUGlBeEtTQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z2RHaGxJR05oYzJVZ2IyWWdZU0J0ZFd4MGFTMWphR0Z5WVdOMFpYSWdiVzl1YjIxbGNpQmpiMjUyWlhKMFpXUWdkRzhnUmtGVFZFRmNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQnRiMjV2YldWeUlEMGdKMXNuSUNzZ2FYUmxiU0FySUNkZEp6dGNiaUFnSUNBZ0lDQWdJQ0IwWjNSTmIyNXZiV1Z5YzBGeWNtRjVMbkIxYzJnb2JXOXViMjFsY2lrN1hHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdkR2QwVFc5dWIyMWxjbk5CY25KaGVTNXdkWE5vS0dsMFpXMHBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR2QwVFc5dWIyMWxjbk5CY25KaGVTNXFiMmx1S0hSbmRGTmxjR0Z5WVhSdmNpazdYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQXZMeUJVUVVkVExtRnNhV2R1WldRZ2FYTWdiV0Z1WkdGMGIzSjVJR1p2Y2lCamIyeDFiVzV6SUc5bUlFNVBWRUZVU1U5T0xrWkJVMVJCSUdGdVpDQk9UMVJCVkVsUFRpNVRSVkJCVWtGVVQxSmNiaUFnSUNCamIyNXpkQ0J6Y0d4cGRIUmxjam9nVTNCc2FYUjBaWEpHZFc1aklEMGdaMlYwVTNCc2FYUjBaWEpHYjNKRGIyeDFiVzRvYm1WM1EyOXNkVzF1S1R0Y2JpQWdJQ0JqYjI1emRDQnpkR0YwY3pvZ1UyVnhRMjlzVTNSaGRITWdQU0JuWlhSVGRHRjBjeWh1WlhkRGIyeDFiVzRzSURVc0lITndiR2wwZEdWeUtUdGNiaUFnSUNCamIyNXpkQ0JoYkdsbmJtVmtJRDBnYzNSaGRITXVjMkZ0WlV4bGJtZDBhQ0EvSUNkVFJWRXVUVk5CSnlBNklDZFRSVkVuTzF4dUlDQWdJRzVsZDBOdmJIVnRiaTV6WlhSVVlXY29WRUZIVXk1aGJHbG5ibVZrTENCaGJHbG5ibVZrS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ1WlhkRGIyeDFiVzQ3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUdOdmJuWmxjblJJWld4dFZHOVRaWEJoY21GMGIzSW9LVG9nUkVjdVEyOXNkVzF1SUh0Y2JpQWdJQ0F2THlCVVQwUlBPaUJwYlhCc1pXMWxiblJoZEdsdmNtVjBkWEp1SUhSb2FYTXVaMlYwVG1WM1EyOXNkVzF1S0NrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVoyVjBUbVYzUTI5c2RXMXVLRTVQVkVGVVNVOU9MbE5GVUVGU1FWUlBVaWs3WEc0Z0lIMWNibHh1SUNBdktpb2dSR2x6Y0dGMFkyaGxjaUJ0WlhSb2IyUWdabTl5SUc1dmRHRjBhVzl1SUdOdmJuWmxjbk5wYjI1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdE9UMVJCVkVsUFRuMGdkR2QwVG05MFlYUnBiMjRnSUNCT2IzUmhkR2x2YmlCM1pTQjNZVzUwSUhSdklHTnZiblpsY25RZ2RHOWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWNnZkNCdWRXeHNmU0IwWjNSVFpYQmhjbUYwYjNJZ0lDQlFiM056YVdKc1pTQnpaWEJoY21GMGIzSmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JFY3VRMjlzZFcxdWZTQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCRGIyNTJaWEowWldRZ1kyOXNkVzF1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWTI5dWRtVnlkQ2gwWjNST2IzUmhkR2x2YmpvZ1RrOVVRVlJKVDA0c0lIUm5kRk5sY0dGeVlYUnZjam9nYzNSeWFXNW5JSHdnYm5Wc2JDQTlJRzUxYkd3cE9pQkVSeTVEYjJ4MWJXNGdlMXh1SUNBZ0lDOHZJSEJ2YzNOcFlteGxJR1Y0WTJWd2RHbHZibk5jYmlBZ0lDQnBaaUFvZEdocGN5NXViM1JoZEdsdmJpQTlQVDBnZEdkMFRtOTBZWFJwYjI0cFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjNSbmRDQnViM1JoZEdsdmJpQnBjeUJwYm5aaGJHbGtKeWs3WEc0Z0lDQWdhV1lnS0hSb2FYTXVkRzlUWlhCaGNtRjBiM0lvZEdkMFRtOTBZWFJwYjI0cElDWW1JSFJuZEZObGNHRnlZWFJ2Y2lBOVBUMGdiblZzYkNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduZEdkMElITmxjR0Z5WVhSdmNpQnBjeUJ1YjNRZ2MzQmxZMmxtYVdWa0p5azdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NXBjMFpoYzNSaEtDa2dKaVlnZEdocGN5NTBiMU5sY0dGeVlYUnZjaWgwWjNST2IzUmhkR2x2YmlrZ0ppWWdkR2QwVTJWd1lYSmhkRzl5SUNFOVBTQnVkV3hzS1Z4dUlDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyOXVkbVZ5ZEVaaGMzUmhWRzlUWlhCaGNtRjBiM0lvZEdkMFUyVndZWEpoZEc5eUtUdGNiaUFnSUNCbGJITmxJR2xtSUNnb2RHaHBjeTVwYzBaaGMzUmhLQ2tnZkh3Z2RHaHBjeTVwYzFObGNHRnlZWFJ2Y2lncEtTQW1KaUIwYUdsekxuUnZTR1ZzYlNoMFozUk9iM1JoZEdsdmJpa3BYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYjI1MlpYSjBWRzlJWld4dEtDazdYRzRnSUNBZ1pXeHpaU0JwWmlBb2RHaHBjeTVwYzFObGNHRnlZWFJ2Y2lncElDWW1JSFJvYVhNdWRHOUdZWE4wWVNoMFozUk9iM1JoZEdsdmJpa3BYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYjI1MlpYSjBVMlZ3WVhKaGRHOXlWRzlHWVhOMFlTZ3BPMXh1SUNBZ0lHVnNjMlVnYVdZZ0tIUm9hWE11YVhOSVpXeHRLQ2tnSmlZZ2RHaHBjeTUwYjBaaGMzUmhLSFJuZEU1dmRHRjBhVzl1S1NrZ0x5OGdkR2hsSUdOaGMyVWdiMllnU0VWTVRWeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMjl1ZG1WeWRFaGxiRzBvZEdkMFRtOTBZWFJwYjI0cE8xeHVJQ0FnSUdWc2MyVWdhV1lnS0hSb2FYTXVhWE5JWld4dEtDa2dKaVlnZEdocGN5NTBiMU5sY0dGeVlYUnZjaWgwWjNST2IzUmhkR2x2YmlrcFhHNGdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWpiMjUyWlhKMFNHVnNiU2gwWjNST2IzUmhkR2x2Yml3Z2RHZDBVMlZ3WVhKaGRHOXlJU2s3WEc0Z0lDQWdaV3h6WlZ4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RPYjNRZ2MzVndjRzl5ZEdWa0lHTnZiblpsY25OcGIyNGdKeUFyWEc0Z0lDQWdJQ0FnSUdCbWNtOXRJSE52ZFhKalpTQnViM1JoZEdsdmJpQW5KSHQwYUdsekxtNXZkR0YwYVc5dWZTY2dkRzhnZEdGeVoyVjBJRzV2ZEdGMGFXOXVJQ2NrZTNSbmRFNXZkR0YwYVc5dWZTY3VZQ2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb1kyOXNPaUJFUnk1RGIyeDFiVzRwSUh0Y2JpQWdJQ0J6ZFhCbGNpaGpiMndwTzF4dUlDQjlYRzU5WEc0aVhYMD0iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgZGV0ZWN0QWxwaGFiZXQsIGdldFNwbGl0dGVyRm9yQ29sdW1uLCBnZXRTdGF0cywgc3BsaXR0ZXJBc0Zhc3RhIH0gZnJvbSAnLi9tYWNyb21vbGVjdWxlJztcbi8qKiBDbGFzcyBmb3IgaGFuZGxpbmcgbm90YXRpb24gdW5pdHMgaW4gTWFjcm9tb2xlY3VsZSBjb2x1bW5zICovXG5leHBvcnQgY2xhc3MgVW5pdHNIYW5kbGVyIHtcbiAgICBzdGF0aWMgc2V0VW5pdHNUb0Zhc3RhQ29sdW1uKGNvbCkge1xuICAgICAgICBpZiAoY29sLnNlbVR5cGUgIT09IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFzdGEgY29sdW1uIG11c3QgYmUgTUFDUk9NT0xFQ1VMRScpO1xuICAgICAgICBjb25zdCBzdGF0cyA9IGdldFN0YXRzKGNvbCwgNSwgc3BsaXR0ZXJBc0Zhc3RhKTtcbiAgICAgICAgY29uc3QgYWxpZ25lZCA9IHN0YXRzLnNhbWVMZW5ndGggPyAnU0VRLk1TQScgOiAnU0VRJztcbiAgICAgICAgY29uc3QgYWxwaGFiZXQgPSBkZXRlY3RBbHBoYWJldChzdGF0cyk7XG4gICAgICAgIGNvbC5zZXRUYWcoREcuVEFHUy5VTklUUywgXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovKTtcbiAgICAgICAgY29sLnNldFRhZyhcImFsaWduZWRcIiAvKiBUQUdTLmFsaWduZWQgKi8sIGFsaWduZWQpO1xuICAgICAgICBjb2wuc2V0VGFnKFwiYWxwaGFiZXRcIiAvKiBUQUdTLmFscGhhYmV0ICovLCBhbHBoYWJldCk7XG4gICAgfVxuICAgIGdldCB1bml0cygpIHsgcmV0dXJuIHRoaXMuX3VuaXRzOyB9XG4gICAgZ2V0IGNvbHVtbigpIHsgcmV0dXJuIHRoaXMuX2NvbHVtbjsgfVxuICAgIGdldCBub3RhdGlvbigpIHsgcmV0dXJuIHRoaXMuX25vdGF0aW9uOyB9XG4gICAgZ2V0IGRlZmF1bHRHYXBTeW1ib2woKSB7IHJldHVybiB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sOyB9XG4gICAgZ2V0IHNlcGFyYXRvcigpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSAoX2EgPSB0aGlzLmNvbHVtbi5nZXRUYWcoXCJzZXBhcmF0b3JcIiAvKiBUQUdTLnNlcGFyYXRvciAqLykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHRoaXMubm90YXRpb24gPT09IFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovICYmIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXBhcmF0b3IgaXMgbWFuZGF0b3J5ICBmb3IgY29sdW1uICcke3RoaXMuY29sdW1uLm5hbWV9JyBvZiBub3RhdGlvbiAnJHt0aGlzLm5vdGF0aW9ufScuYCk7XG4gICAgICAgIHJldHVybiBzZXBhcmF0b3I7XG4gICAgfVxuICAgIGdldCBhbGlnbmVkKCkge1xuICAgICAgICBjb25zdCBhbGlnbmVkID0gdGhpcy5jb2x1bW4uZ2V0VGFnKFwiYWxpZ25lZFwiIC8qIFRBR1MuYWxpZ25lZCAqLyk7XG4gICAgICAgIC8vIFRBR1MuYWxpZ25lZCBpcyBtYW5kYXRvcnkgZm9yIGNvbHVtbnMgb2YgTk9UQVRJT04uRkFTVEEgYW5kIE5PVEFUSU9OLlNFUEFSQVRPUlxuICAgICAgICBpZiAoIWFsaWduZWQgJiYgKHRoaXMuaXNGYXN0YSgpIHx8IHRoaXMuaXNTZXBhcmF0b3IoKSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhZyBhbGlnbmVkIG5vdCBzZXQnKTtcbiAgICAgICAgcmV0dXJuIGFsaWduZWQ7XG4gICAgfVxuICAgIC8qKiBBbHBoYWJldCBuYW1lICh1cHBlciBjYXNlKSAqL1xuICAgIGdldCBhbHBoYWJldCgpIHtcbiAgICAgICAgY29uc3QgYWxwaGFiZXQgPSB0aGlzLmNvbHVtbi5nZXRUYWcoXCJhbHBoYWJldFwiIC8qIFRBR1MuYWxwaGFiZXQgKi8pO1xuICAgICAgICAvLyBUQUdTLmFscGhhYmV0IGlzIG1hbmRhdG9yeSBmb3IgY29sdW1ucyBvZiBOT1RBVElPTi5GQVNUQSBhbmQgTk9UQVRJT04uU0VQQVJBVE9SXG4gICAgICAgIGlmICghYWxwaGFiZXQgJiYgKHRoaXMuaXNGYXN0YSgpIHx8IHRoaXMuaXNTZXBhcmF0b3IoKSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhZyBhbHBoYWJldCBub3Qgc2V0Jyk7XG4gICAgICAgIHJldHVybiBhbHBoYWJldDtcbiAgICB9XG4gICAgZ2V0QWxwaGFiZXRTaXplKCkge1xuICAgICAgICBpZiAodGhpcy5ub3RhdGlvbiA9PSBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovIHx8IHRoaXMuYWxwaGFiZXQgPT0gXCJVTlwiIC8qIEFMUEhBQkVULlVOICovKSB7XG4gICAgICAgICAgICBjb25zdCBhbHBoYWJldFNpemVTdHIgPSB0aGlzLmNvbHVtbi5nZXRUYWcoXCIuYWxwaGFiZXRTaXplXCIgLyogVEFHUy5hbHBoYWJldFNpemUgKi8pO1xuICAgICAgICAgICAgbGV0IGFscGhhYmV0U2l6ZTtcbiAgICAgICAgICAgIGlmIChhbHBoYWJldFNpemVTdHIpIHtcbiAgICAgICAgICAgICAgICBhbHBoYWJldFNpemUgPSBwYXJzZUludChhbHBoYWJldFNpemVTdHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIGFscGhhYmV0U2l6ZSBvbiBkZW1hbmRcbiAgICAgICAgICAgICAgICBjb25zdCBzcGxpdHRlciA9IGdldFNwbGl0dGVyRm9yQ29sdW1uKHRoaXMuY29sdW1uKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0cyA9IGdldFN0YXRzKHRoaXMuY29sdW1uLCAxLCBzcGxpdHRlcik7XG4gICAgICAgICAgICAgICAgYWxwaGFiZXRTaXplID0gT2JqZWN0LmtleXMoc3RhdHMuZnJlcSkubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFscGhhYmV0U2l6ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5hbHBoYWJldCkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJQVFwiIC8qIEFMUEhBQkVULlBUICovOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjA7XG4gICAgICAgICAgICAgICAgY2FzZSBcIkROQVwiIC8qIEFMUEhBQkVULkROQSAqLzpcbiAgICAgICAgICAgICAgICBjYXNlIFwiUk5BXCIgLyogQUxQSEFCRVQuUk5BICovOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDtcbiAgICAgICAgICAgICAgICBjYXNlICdOVCc6XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5leHBlY3RlZCBhbHBoYWJldCAnTlQnLmApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgYWxwaGFiZXQgJyR7dGhpcy5hbHBoYWJldH0nLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGdldEFscGhhYmV0SXNNdWx0aWNoYXIoKSB7XG4gICAgICAgIGlmICh0aGlzLm5vdGF0aW9uID09IFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi8gfHwgdGhpcy5hbHBoYWJldCA9PSBcIlVOXCIgLyogQUxQSEFCRVQuVU4gKi8pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW4uZ2V0VGFnKFwiLmFscGhhYmV0SXNNdWx0aWNoYXJcIiAvKiBUQUdTLmFscGhhYmV0SXNNdWx0aWNoYXIgKi8pID09ICd0cnVlJztcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpc0Zhc3RhKCkgeyByZXR1cm4gdGhpcy5ub3RhdGlvbiA9PT0gXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgaXNTZXBhcmF0b3IoKSB7IHJldHVybiB0aGlzLm5vdGF0aW9uID09PSBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIGlzSGVsbSgpIHsgcmV0dXJuIHRoaXMubm90YXRpb24gPT09IFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICBpc1JuYSgpIHsgcmV0dXJuIHRoaXMuYWxwaGFiZXQgPT09IFwiUk5BXCIgLyogQUxQSEFCRVQuUk5BICovOyB9XG4gICAgaXNEbmEoKSB7IHJldHVybiB0aGlzLmFscGhhYmV0ID09PSBcIkROQVwiIC8qIEFMUEhBQkVULkROQSAqLzsgfVxuICAgIGlzUGVwdGlkZSgpIHsgcmV0dXJuIHRoaXMuYWxwaGFiZXQgPT09IFwiUFRcIiAvKiBBTFBIQUJFVC5QVCAqLzsgfVxuICAgIGlzTXNhKCkgeyByZXR1cm4gdGhpcy5hbGlnbmVkID8gdGhpcy5hbGlnbmVkLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoJ01TQScpIDogZmFsc2U7IH1cbiAgICAvKiogQXNzb2NpYXRlIG5vdGF0aW9uIHR5cGVzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdW5pdHMgKi9cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOT1RBVElPTn0gICAgIE5vdGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgdW5pdHMgdHlwZVxuICAgICAqL1xuICAgIGdldE5vdGF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy51bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovKSlcbiAgICAgICAgICAgIHJldHVybiBcImZhc3RhXCIgLyogTk9UQVRJT04uRkFTVEEgKi87XG4gICAgICAgIGVsc2UgaWYgKHRoaXMudW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovKSlcbiAgICAgICAgICAgIHJldHVybiBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLztcbiAgICAgICAgZWxzZSBpZiAodGhpcy51bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLykpXG4gICAgICAgICAgICByZXR1cm4gXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLztcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb2x1bW4gJyR7dGhpcy5jb2x1bW4ubmFtZX0nIGhhcyB1bmV4cGVjdGVkIG5vdGF0aW9uICcke3RoaXMudW5pdHN9Jy5gKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbmV3IGVtcHR5IGNvbHVtbiBvZiB0aGUgc3BlY2lmaWVkIG5vdGF0aW9uIHR5cGUgYW5kIHRoZSBzYW1lXG4gICAgICogbGVuZ3RoIGFzIGNvbHVtblxuICAgICAqXG4gICAgICogQHBhcmFtIHtOT1RBVElPTn0gdGFyZ2V0Tm90YXRpb25cbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59XG4gICAgICovXG4gICAgZ2V0TmV3Q29sdW1uKHRhcmdldE5vdGF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuY29sdW1uO1xuICAgICAgICBjb25zdCBsZW4gPSBjb2wubGVuZ3RoO1xuICAgICAgICBjb25zdCBuYW1lID0gdGFyZ2V0Tm90YXRpb24udG9Mb3dlckNhc2UoKSArICcoJyArIGNvbC5uYW1lICsgJyknO1xuICAgICAgICBjb25zdCBuZXdDb2xOYW1lID0gY29sLmRhdGFGcmFtZS5jb2x1bW5zLmdldFVudXNlZE5hbWUobmFtZSk7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IERHLkNvbHVtbi5mcm9tTGlzdCgnc3RyaW5nJywgbmV3Q29sTmFtZSwgbmV3IEFycmF5KGxlbikuZmlsbCgnJykpO1xuICAgICAgICBuZXdDb2x1bW4uc2VtVHlwZSA9IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRTtcbiAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhERy5UQUdTLlVOSVRTLCB0YXJnZXROb3RhdGlvbik7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5DRUxMX1JFTkRFUkVSLCAnTWFjcm9tb2xlY3VsZScpO1xuICAgICAgICBjb25zdCBzcmNBbGlnbmVkID0gY29sLmdldFRhZyhcImFsaWduZWRcIiAvKiBUQUdTLmFsaWduZWQgKi8pO1xuICAgICAgICBpZiAoc3JjQWxpZ25lZClcbiAgICAgICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoXCJhbGlnbmVkXCIgLyogVEFHUy5hbGlnbmVkICovLCBzcmNBbGlnbmVkKTtcbiAgICAgICAgY29uc3Qgc3JjQWxwaGFiZXQgPSBjb2wuZ2V0VGFnKFwiYWxwaGFiZXRcIiAvKiBUQUdTLmFscGhhYmV0ICovKTtcbiAgICAgICAgaWYgKHNyY0FscGhhYmV0KVxuICAgICAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhcImFscGhhYmV0XCIgLyogVEFHUy5hbHBoYWJldCAqLywgc3JjQWxwaGFiZXQpO1xuICAgICAgICBsZXQgc3JjQWxwaGFiZXRTaXplID0gY29sLmdldFRhZyhcIi5hbHBoYWJldFNpemVcIiAvKiBUQUdTLmFscGhhYmV0U2l6ZSAqLyk7XG4gICAgICAgIGlmIChzcmNBbHBoYWJldFNpemUpXG4gICAgICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKFwiLmFscGhhYmV0U2l6ZVwiIC8qIFRBR1MuYWxwaGFiZXRTaXplICovLCBzcmNBbHBoYWJldFNpemUpO1xuICAgICAgICBjb25zdCBzcmNBbHBoYWJldElzTXVsdGljaGFyID0gY29sLmdldFRhZyhcIi5hbHBoYWJldElzTXVsdGljaGFyXCIgLyogVEFHUy5hbHBoYWJldElzTXVsdGljaGFyICovKTtcbiAgICAgICAgaWYgKHNyY0FscGhhYmV0SXNNdWx0aWNoYXIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoXCIuYWxwaGFiZXRJc011bHRpY2hhclwiIC8qIFRBR1MuYWxwaGFiZXRJc011bHRpY2hhciAqLywgc3JjQWxwaGFiZXRJc011bHRpY2hhcik7XG4gICAgICAgIGlmICh0YXJnZXROb3RhdGlvbiA9PSBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovKSB7XG4gICAgICAgICAgICBzcmNBbHBoYWJldFNpemUgPSB0aGlzLmdldEFscGhhYmV0U2l6ZSgpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKFwiLmFscGhhYmV0U2l6ZVwiIC8qIFRBR1MuYWxwaGFiZXRTaXplICovLCBzcmNBbHBoYWJldFNpemUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyBlbXB0eSBjb2x1bW4gdXNpbmcgdGVtcGxhdGVDb2wgYXMgYSB0ZW1wbGF0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIHtERy5Db2x1bW59IHRlbXBsYXRlQ29sICB0aGUgcHJvcGVydGllcyBhbmQgdW5pdHMgb2YgdGhpcyBjb2x1bW4gYXJlIHVzZWQgYXMgYVxuICAgICAqIHRlbXBsYXRlIHRvIGJ1aWxkIHRoZSBuZXcgb25lXG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXROZXdDb2x1bW4odGVtcGxhdGVDb2wpIHtcbiAgICAgICAgY29uc3QgY29sID0gbmV3IFVuaXRzSGFuZGxlcih0ZW1wbGF0ZUNvbCk7XG4gICAgICAgIGNvbnN0IHRhcmdldE5vdGF0aW9uID0gY29sLm5vdGF0aW9uO1xuICAgICAgICByZXR1cm4gY29sLmdldE5ld0NvbHVtbih0YXJnZXROb3RhdGlvbik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgaGVscGVyIGZ1bmN0aW9uIGNoZWNraW5nIHRoZSB2YWxpZGl0eSBvZiB0aGUgJ3VuaXRzJyBzdHJpbmdcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0cyAgdGhlIHN0cmluZyB0byBiZSB2YWxpZGF0ZWRcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgICAqL1xuICAgIHN0YXRpYyB1bml0c1N0cmluZ0lzVmFsaWQodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSB1bml0cy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBwcmVmaXhlcyA9IFtcImZhc3RhXCIgLyogTk9UQVRJT04uRkFTVEEgKi8sIFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovLCBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovXTtcbiAgICAgICAgY29uc3QgcG9zdGZpeGVzID0gWydybmEnLCAnZG5hJywgJ3B0J107XG4gICAgICAgIGNvbnN0IHByZWZpeENyaXRlcmlvbiA9IHByZWZpeGVzLnNvbWUoKHApID0+IHVuaXRzLnN0YXJ0c1dpdGgocC50b0xvd2VyQ2FzZSgpKSk7XG4gICAgICAgIHJldHVybiBwcmVmaXhDcml0ZXJpb247XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdCBhIG5ldyBjb2x1bW4gb2Ygc2VtYW50aWMgdHlwZSBNQUNST01PTEVDVUxFIGZyb20gdGhlIGxpc3Qgb2ZcbiAgICAgKiBzcGVjaWZpZWQgcGFyYW1ldGVyc1xuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9ICAgIGxlbiAgdGhlIGxlbmd0aCBvZiB0aGUgbmV3IGNvbHVtblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSAgICBuYW1lICB0aGUgbmFtZSBvZiB0aGUgbmV3IGNvbHVtblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSAgICB1bml0cyAgdGhlIHVuaXRzIG9mIHRoZSBuZXcgY29sdW1uXG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXROZXdDb2x1bW5Gcm9tUGFyYW1zKGxlbiwgbmFtZSwgdW5pdHMpIHtcbiAgICAgICAgLy8gV0FSTklORzogaW4gdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBpcyBpbXBvc3NpYmxlIHRvIHZlcmlmeSB0aGUgdW5pcXVlbmVzc1xuICAgICAgICAvLyBvZiB0aGUgbmV3IGNvbHVtbidzIG5hbWVcbiAgICAgICAgLy8gVE9ETzogdmVyaWZ5IHRoZSB2YWxpZGl0eSBvZiB1bml0cyBwYXJhbWV0ZXJcbiAgICAgICAgaWYgKCFVbml0c0hhbmRsZXIudW5pdHNTdHJpbmdJc1ZhbGlkKHVuaXRzKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmb3JtYXQgb2YgXFwndW5pdHNcXCcgcGFyYW1ldGVyJyk7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IERHLkNvbHVtbi5mcm9tTGlzdCgnc3RyaW5nJywgbmFtZSwgbmV3IEFycmF5KGxlbikuZmlsbCgnJykpO1xuICAgICAgICBuZXdDb2x1bW4uc2VtVHlwZSA9IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRTtcbiAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhERy5UQUdTLlVOSVRTLCB1bml0cyk7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGNvbCkge1xuICAgICAgICB0aGlzLl9jb2x1bW4gPSBjb2w7XG4gICAgICAgIGNvbnN0IHVuaXRzID0gdGhpcy5fY29sdW1uLnRhZ3NbREcuVEFHUy5VTklUU107XG4gICAgICAgIGlmICh1bml0cyAhPT0gbnVsbClcbiAgICAgICAgICAgIHRoaXMuX3VuaXRzID0gdW5pdHM7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5pdHMgYXJlIG5vdCBzcGVjaWZpZWQgaW4gY29sdW1uJyk7XG4gICAgICAgIHRoaXMuX25vdGF0aW9uID0gdGhpcy5nZXROb3RhdGlvbigpO1xuICAgICAgICB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sID0gKHRoaXMuaXNGYXN0YSgpKSA/IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkZBU1RBIDpcbiAgICAgICAgICAgICh0aGlzLmlzSGVsbSgpKSA/IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkhFTE0gOlxuICAgICAgICAgICAgICAgIFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LlNFUEFSQVRPUjtcbiAgICAgICAgaWYgKCF0aGlzLmNvbHVtbi50YWdzLmhhcyhcImFsaWduZWRcIiAvKiBUQUdTLmFsaWduZWQgKi8pKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0Zhc3RhKCkgfHwgdGhpcy5pc1NlcGFyYXRvcigpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRm9yIGNvbHVtbiAnJHt0aGlzLmNvbHVtbi5uYW1lfScgb2Ygbm90YXRpb24gJyR7dGhpcy5ub3RhdGlvbn0nIGAgK1xuICAgICAgICAgICAgICAgICAgICBgdGFnICcke1wiYWxpZ25lZFwiIC8qIFRBR1MuYWxpZ25lZCAqL30nIGlzIG1hbmRhdG9yeS5gKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAoIXRoaXMuY29sdW1uLnRhZ3MuaGFzKFRBR1MuYWxwaGFiZXRTaXplKSkge1xuICAgICAgICAvLyAgIGlmICh0aGlzLmlzSGVsbSgpKVxuICAgICAgICAvLyAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3IgY29sdW1uICcke3RoaXMuY29sdW1uLm5hbWV9JyBvZiBub3RhdGlvbiAnJHt0aGlzLm5vdGF0aW9ufScgYCArXG4gICAgICAgIC8vICAgICAgIGB0YWcgJyR7VEFHUy5hbHBoYWJldFNpemV9JyBpcyBtYW5kYXRvcnkuYCk7XG4gICAgICAgIC8vICAgZWxzZSBpZiAoWydVTiddLmluY2x1ZGVzKHRoaXMuYWxwaGFiZXQpKVxuICAgICAgICAvLyAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3IgY29sdW1uICcke3RoaXMuY29sdW1uLm5hbWV9JyBvZiBhbHBoYWJldCAnJHt0aGlzLmFscGhhYmV0fScgYCArXG4gICAgICAgIC8vICAgICAgIGB0YWcgJyR7VEFHUy5hbHBoYWJldFNpemV9JyBpcyBtYW5kYXRvcnkuYCk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgaWYgKCF0aGlzLmNvbHVtbi50YWdzLmhhcyhcIi5hbHBoYWJldElzTXVsdGljaGFyXCIgLyogVEFHUy5hbHBoYWJldElzTXVsdGljaGFyICovKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNIZWxtKCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3IgY29sdW1uICcke3RoaXMuY29sdW1uLm5hbWV9JyBvZiBub3RhdGlvbiAnJHt0aGlzLm5vdGF0aW9ufScgYCArXG4gICAgICAgICAgICAgICAgICAgIGB0YWcgJyR7XCIuYWxwaGFiZXRJc011bHRpY2hhclwiIC8qIFRBR1MuYWxwaGFiZXRJc011bHRpY2hhciAqL30nIGlzIG1hbmRhdG9yeS5gKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKFsnVU4nXS5pbmNsdWRlcyh0aGlzLmFscGhhYmV0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvciBjb2x1bW4gJyR7dGhpcy5jb2x1bW4ubmFtZX0nIG9mIGFscGhhYmV0ICcke3RoaXMuYWxwaGFiZXR9JyBgICtcbiAgICAgICAgICAgICAgICAgICAgYHRhZyAnJHtcIi5hbHBoYWJldElzTXVsdGljaGFyXCIgLyogVEFHUy5hbHBoYWJldElzTXVsdGljaGFyICovfScgaXMgbWFuZGF0b3J5LmApO1xuICAgICAgICB9XG4gICAgfVxufVxuVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QgPSB7XG4gICAgSEVMTTogJyonLFxuICAgIFNFUEFSQVRPUjogJycsXG4gICAgRkFTVEE6ICctJyxcbn07XG5Vbml0c0hhbmRsZXIuUGVwdGlkZUZhc3RhQWxwaGFiZXQgPSBuZXcgU2V0KFtcbiAgICAnRycsICdMJywgJ1knLCAnUycsICdFJywgJ1EnLCAnRCcsICdOJywgJ0YnLCAnQScsXG4gICAgJ0snLCAnUicsICdIJywgJ0MnLCAnVicsICdQJywgJ1cnLCAnSScsICdNJywgJ1QnLFxuXSk7XG5Vbml0c0hhbmRsZXIuRG5hRmFzdGFBbHBoYWJldCA9IG5ldyBTZXQoWydBJywgJ0MnLCAnRycsICdUJ10pO1xuVW5pdHNIYW5kbGVyLlJuYUZhc3RhQWxwaGFiZXQgPSBuZXcgU2V0KFsnQScsICdDJywgJ0cnLCAnVSddKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRXNXBkSE10YUdGdVpHeGxjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluVnVhWFJ6TFdoaGJtUnNaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNUMEZCVHl4TFFVRkxMRVZCUVVVc1RVRkJUU3hwUWtGQmFVSXNRMEZCUXp0QlFVVjBReXhQUVVGUExFVkJSVXdzWTBGQll5eEZRVU5rTEc5Q1FVRnZRaXhGUVVOd1FpeFJRVUZSTEVWQlIxSXNaVUZCWlN4RlFVZG9RaXhOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUlhwQ0xHbEZRVUZwUlR0QlFVTnFSU3hOUVVGTkxFOUJRVThzV1VGQldUdEpRV3RDYUVJc1RVRkJUU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRWRCUVdNN1VVRkRhRVFzU1VGQlNTeEhRVUZITEVOQlFVTXNUMEZCVHl4TFFVRkxMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllUdFpRVU14UXl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExHOURRVUZ2UXl4RFFVRkRMRU5CUVVNN1VVRkZlRVFzVFVGQlRTeExRVUZMTEVkQlFXZENMRkZCUVZFc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEdWQlFXVXNRMEZCUXl4RFFVRkRPMUZCUXpkRUxFMUJRVTBzVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCUTNKRUxFMUJRVTBzVVVGQlVTeEhRVUZITEdOQlFXTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVWMlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5d3JRa0ZCYVVJc1EwRkJRenRSUVVNeFF5eEhRVUZITEVOQlFVTXNUVUZCVFN3clFrRkJaU3hQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5zUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hwUTBGQlowSXNVVUZCVVN4RFFVRkRMRU5CUVVNN1NVRkRkRU1zUTBGQlF6dEpRVVZFTEVsQlFXTXNTMEZCU3l4TFFVRmhMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGY2tRc1NVRkJZeXhOUVVGTkxFdEJRV2RDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03U1VGRk1VUXNTVUZCVnl4UlFVRlJMRXRCUVdVc1QwRkJUeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVXhSQ3hKUVVGWExHZENRVUZuUWl4TFFVRmhMRTlCUVU4c1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWNFJTeEpRVUZYTEZOQlFWTTdPMUZCUTJ4Q0xFMUJRVTBzVTBGQlV5eEhRVUYxUWl4TlFVRkJMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeHJRMEZCWjBJc2JVTkJRVWtzVTBGQlV5eERRVUZETzFGQlEzUkdMRWxCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzZVVOQlFYVkNMRWxCUVVrc1UwRkJVeXhMUVVGTExGTkJRVk03V1VGRGFrVXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXgxUTBGQmRVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxHdENRVUZyUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU01Unl4UFFVRlBMRk5CUVZNc1EwRkJRenRKUVVOdVFpeERRVUZETzBsQlJVUXNTVUZCVnl4UFFVRlBPMUZCUTJoQ0xFMUJRVTBzVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3c0UWtGQll5eERRVUZETzFGQlJXcEVMR2xHUVVGcFJqdFJRVU5xUml4SlFVRkpMRU5CUVVNc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4SlFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF6dFpRVU53UkN4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRU5CUVVNN1VVRkZla01zVDBGQlR5eFBRVUZQTEVOQlFVTTdTVUZEYWtJc1EwRkJRenRKUVVWRUxHbERRVUZwUXp0SlFVTnFReXhKUVVGWExGRkJRVkU3VVVGRGFrSXNUVUZCVFN4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEdkRFFVRmxMRU5CUVVNN1VVRkZia1FzYTBaQlFXdEdPMUZCUTJ4R0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFbEJRVWtzU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRPMWxCUTNKRUxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNjMEpCUVhOQ0xFTkJRVU1zUTBGQlF6dFJRVVV4UXl4UFFVRlBMRkZCUVZFc1EwRkJRenRKUVVOc1FpeERRVUZETzBsQlJVMHNaVUZCWlR0UlFVTndRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTERoQ1FVRnBRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTERCQ1FVRmxMRVZCUVVVN1dVRkRiRVVzVFVGQlRTeGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxIbERRVUZ0UWl4RFFVRkRPMWxCUXpsRUxFbEJRVWtzV1VGQmIwSXNRMEZCUXp0WlFVTjZRaXhKUVVGSkxHVkJRV1VzUlVGQlJUdG5Ra0ZEYmtJc1dVRkJXU3hIUVVGSExGRkJRVkVzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXp0aFFVTXhRenRwUWtGQlRUdG5Ra0ZEVEN4dFEwRkJiVU03WjBKQlEyNURMRTFCUVUwc1VVRkJVU3hIUVVGcFFpeHZRa0ZCYjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdaMEpCUTJwRkxFMUJRVTBzUzBGQlN5eEhRVUZITEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0blFrRkRha1FzV1VGQldTeEhRVUZITEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXp0aFFVTXZRenRaUVVORUxFOUJRVThzV1VGQldTeERRVUZETzFOQlEzSkNPMkZCUVUwN1dVRkRUQ3hSUVVGUkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVTdaMEpCUTNaQ08yOUNRVU5GTEU5QlFVOHNSVUZCUlN4RFFVRkRPMmRDUVVOYUxEaENRVUZyUWp0blFrRkRiRUk3YjBKQlEwVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1owSkJRMWdzUzBGQlN5eEpRVUZKTzI5Q1FVTlFMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zTWtKQlFUSkNMRU5CUVVNc1EwRkJRenR2UWtGRE1VTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1owSkJRMWc3YjBKQlEwVXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXgzUWtGQmQwSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1NVRkJTU3hEUVVGRExFTkJRVU03WVVGRE5VUTdVMEZEUmp0SlFVTklMRU5CUVVNN1NVRkZUU3h6UWtGQmMwSTdVVUZETTBJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTdzRRa0ZCYVVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTd3dRa0ZCWlR0WlFVTm9SU3hQUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4MVJFRkJNRUlzU1VGQlNTeE5RVUZOTEVOQlFVTTdPMWxCUlRsRUxFOUJRVThzUzBGQlN5eERRVUZETzBsQlEycENMRU5CUVVNN1NVRkZUU3hQUVVGUExFdEJRV01zVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4cFEwRkJiVUlzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGTDBRc1YwRkJWeXhMUVVGakxFOUJRVThzU1VGQlNTeERRVUZETEZGQlFWRXNlVU5CUVhWQ0xFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJYWkZMRTFCUVUwc1MwRkJZeXhQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEN0Q1FVRnJRaXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVUzUkN4TFFVRkxMRXRCUVdNc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTdzJRa0ZCYVVJc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRk0wUXNTMEZCU3l4TFFVRmpMRTlCUVU4c1NVRkJTU3hEUVVGRExGRkJRVkVzTmtKQlFXbENMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSVE5FTEZOQlFWTXNTMEZCWXl4UFFVRlBMRWxCUVVrc1EwRkJReXhSUVVGUkxESkNRVUZuUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVVNVJDeExRVUZMTEV0QlFXTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVZ5Unl3MFJFRkJORVE3U1VGRE5VUTdPMDlCUlVjN1NVRkRUeXhYUVVGWE8xRkJRMjVDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eFZRVUZWTERoQ1FVRm5RanRaUVVOeVJDeHZRMEZCYzBJN1lVRkRia0lzU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGVkJRVlVzYzBOQlFXOUNPMWxCUXpsRUxEUkRRVUV3UWp0aFFVTjJRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNc1ZVRkJWU3cwUWtGQlpUdFpRVU42UkN4clEwRkJjVUk3TzFsQlJYSkNMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zVjBGQlZ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc09FSkJRVGhDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRemRHTEVOQlFVTTdTVUZGUkRzN096czdPMDlCVFVjN1NVRkRUeXhaUVVGWkxFTkJRVU1zWTBGQmQwSTdVVUZETjBNc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTjRRaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTNaQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEdOQlFXTXNRMEZCUXl4WFFVRlhMRVZCUVVVc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1VVRkRha1VzVFVGQlRTeFZRVUZWTEVkQlFVY3NSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUXpkRUxFMUJRVTBzVTBGQlV5eEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUlVGQlJTeFZRVUZWTEVWQlFVVXNTVUZCU1N4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRjRVlzVTBGQlV5eERRVUZETEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUTBGQlF6dFJRVU0zUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMR05CUVdNc1EwRkJReXhEUVVGRE8xRkJRMmhFTEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eGhRVUZoTEVWQlFVVXNaVUZCWlN4RFFVRkRMRU5CUVVNN1VVRkZla1FzVFVGQlRTeFZRVUZWTEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc09FSkJRV01zUTBGQlF6dFJRVU0xUXl4SlFVRkpMRlZCUVZVN1dVRkRXaXhUUVVGVExFTkJRVU1zVFVGQlRTd3JRa0ZCWlN4VlFVRlZMRU5CUVVNc1EwRkJRenRSUVVVM1F5eE5RVUZOTEZkQlFWY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1RVRkJUU3huUTBGQlpTeERRVUZETzFGQlF6bERMRWxCUVVrc1YwRkJWenRaUVVOaUxGTkJRVk1zUTBGQlF5eE5RVUZOTEdsRFFVRm5RaXhYUVVGWExFTkJRVU1zUTBGQlF6dFJRVVV2UXl4SlFVRkpMR1ZCUVdVc1IwRkJWeXhIUVVGSExFTkJRVU1zVFVGQlRTeDVRMEZCYlVJc1EwRkJRenRSUVVNMVJDeEpRVUZKTEdWQlFXVTdXVUZEYWtJc1UwRkJVeXhEUVVGRExFMUJRVTBzTUVOQlFXOUNMR1ZCUVdVc1EwRkJReXhEUVVGRE8xRkJSWFpFTEUxQlFVMHNjMEpCUVhOQ0xFZEJRVmNzUjBGQlJ5eERRVUZETEUxQlFVMHNkVVJCUVRCQ0xFTkJRVU03VVVGRE5VVXNTVUZCU1N4elFrRkJjMElzUzBGQlN5eFRRVUZUTzFsQlEzUkRMRk5CUVZNc1EwRkJReXhOUVVGTkxIZEVRVUV5UWl4elFrRkJjMElzUTBGQlF5eERRVUZETzFGQlJYSkZMRWxCUVVrc1kwRkJZeXc0UWtGQmFVSXNSVUZCUlR0WlFVTnVReXhsUVVGbExFZEJRVWNzU1VGQlNTeERRVUZETEdWQlFXVXNSVUZCUlN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8xbEJRM0JFTEZOQlFWTXNRMEZCUXl4TlFVRk5MREJEUVVGdlFpeGxRVUZsTEVOQlFVTXNRMEZCUXp0VFFVTjBSRHRSUVVWRUxFOUJRVThzVTBGQlV5eERRVUZETzBsQlEyNUNMRU5CUVVNN1NVRkZSRHM3T3pzN08wOUJUVWM3U1VGRFNTeE5RVUZOTEVOQlFVTXNXVUZCV1N4RFFVRkRMRmRCUVhOQ08xRkJReTlETEUxQlFVMHNSMEZCUnl4SFFVRnBRaXhKUVVGSkxGbEJRVmtzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTjRSQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eEhRVUZITEVOQlFVTXNVVUZCVVN4RFFVRkRPMUZCUTNCRExFOUJRVThzUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJRenRKUVVNeFF5eERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU1N4TlFVRk5MRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNTMEZCWVR0UlFVTTFReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRPMUZCUXpWQ0xFMUJRVTBzVVVGQlVTeEhRVUZITEdkSFFVRnRSQ3hEUVVGRE8xRkJRM0pGTEUxQlFVMHNVMEZCVXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVVjJReXhOUVVGTkxHVkJRV1VzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYUVZc1QwRkJUeXhsUVVGbExFTkJRVU03U1VGRGVrSXNRMEZCUXp0SlFVVkVPenM3T3pzN096dFBRVkZITzBsQlEwa3NUVUZCVFN4RFFVRkRMSE5DUVVGelFpeERRVU5zUXl4SFFVRlhMRVZCUTFnc1NVRkJXU3hGUVVOYUxFdEJRV0U3VVVGRllpdzBSVUZCTkVVN1VVRkROVVVzTWtKQlFUSkNPMUZCUXpOQ0xDdERRVUVyUXp0UlFVTXZReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExFdEJRVXNzUTBGQlF6dFpRVU42UXl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExIVkRRVUYxUXl4RFFVRkRMRU5CUVVNN1VVRkRNMFFzVFVGQlRTeFRRVUZUTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNNVJTeFRRVUZUTEVOQlFVTXNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETzFGQlF6ZERMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRGRrTXNUMEZCVHl4VFFVRlRMRU5CUVVNN1NVRkRia0lzUTBGQlF6dEpRVVZFTEZsQlFXMUNMRWRCUVdNN1VVRkRMMElzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4SFFVRkhMRU5CUVVNN1VVRkRia0lzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVNdlF5eEpRVUZKTEV0QlFVc3NTMEZCU3l4SlFVRkpPMWxCUTJoQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRPenRaUVVWd1FpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRzFEUVVGdFF5eERRVUZETEVOQlFVTTdVVUZEZGtRc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNN1VVRkRjRU1zU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGbEJRVmtzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU55Uml4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4WlFVRlpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRekZFTEZsQlFWa3NRMEZCUXl4elFrRkJjMElzUTBGQlF5eFRRVUZUTEVOQlFVTTdVVUZGYkVRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc09FSkJRV01zUlVGQlJUdFpRVU4yUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZPMmRDUVVOMFF5eE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMR1ZCUVdVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEd0Q1FVRnJRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEpRVUZKTzI5Q1FVTm9SaXhSUVVGUkxEUkNRVUZaTEdsQ1FVRnBRaXhEUVVGRExFTkJRVU03VTBGRE5VTTdVVUZGUkN4clJFRkJhMFE3VVVGRGJFUXNkVUpCUVhWQ08xRkJRM1pDTERKR1FVRXlSanRSUVVNelJpeHhSRUZCY1VRN1VVRkRja1FzTmtOQlFUWkRPMUZCUXpkRExESkdRVUV5Ump0UlFVTXpSaXh4UkVGQmNVUTdVVUZEY2tRc1NVRkJTVHRSUVVWS0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExIVkVRVUV3UWl4RlFVRkZPMWxCUTI1RUxFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlR0blFrRkRaaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEdWQlFXVXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxHdENRVUZyUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hKUVVGSk8yOUNRVU5vUml4UlFVRlJMSEZFUVVGM1FpeHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8ybENRVU5zUkN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN1owSkJRM0pETEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc1pVRkJaU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NhMEpCUVd0Q0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVsQlFVazdiMEpCUTJoR0xGRkJRVkVzY1VSQlFYZENMR2xDUVVGcFFpeERRVUZETEVOQlFVTTdVMEZEZUVRN1NVRkRTQ3hEUVVGRE96dEJRV2hSZVVJc2JVTkJRWE5DTEVkQlFVYzdTVUZEYWtRc1NVRkJTU3hGUVVGRkxFZEJRVWM3U1VGRFZDeFRRVUZUTEVWQlFVVXNSVUZCUlR0SlFVTmlMRXRCUVVzc1JVRkJSU3hIUVVGSE8wTkJRMWdzUTBGQlF6dEJRVVZ4UWl4cFEwRkJiMElzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCVXp0SlFVTTFSQ3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSE8wbEJRMmhFTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVYzdRMEZEYWtRc1EwRkJReXhEUVVGRE8wRkJRMjlDTERaQ1FVRm5RaXhIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSQ3cyUWtGQlowSXNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJVeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5QkVSeUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2Wkdjbk8xeHVYRzVwYlhCdmNuUWdlMXh1SUNCQlRGQklRVUpGVkN4Y2JpQWdaR1YwWldOMFFXeHdhR0ZpWlhRc1hHNGdJR2RsZEZOd2JHbDBkR1Z5Um05eVEyOXNkVzF1TEZ4dUlDQm5aWFJUZEdGMGN5eGNiaUFnVGs5VVFWUkpUMDRzWEc0Z0lGTmxjVU52YkZOMFlYUnpMRnh1SUNCemNHeHBkSFJsY2tGelJtRnpkR0VzWEc0Z0lGTndiR2wwZEdWeVJuVnVZeXhjYmlBZ1ZFRkhVMXh1ZlNCbWNtOXRJQ2N1TDIxaFkzSnZiVzlzWldOMWJHVW5PMXh1WEc0dktpb2dRMnhoYzNNZ1ptOXlJR2hoYm1Sc2FXNW5JRzV2ZEdGMGFXOXVJSFZ1YVhSeklHbHVJRTFoWTNKdmJXOXNaV04xYkdVZ1kyOXNkVzF1Y3lBcUwxeHVaWGh3YjNKMElHTnNZWE56SUZWdWFYUnpTR0Z1Wkd4bGNpQjdYRzRnSUhCeWIzUmxZM1JsWkNCeVpXRmtiMjVzZVNCZlkyOXNkVzF1T2lCRVJ5NURiMngxYlc0N0lDOHZJSFJvWlNCamIyeDFiVzRnZEc4Z1ltVWdZMjl1ZG1WeWRHVmtYRzRnSUhCeWIzUmxZM1JsWkNCZmRXNXBkSE02SUhOMGNtbHVaenNnTHk4Z2RXNXBkSE1zSUc5bUlIUm9aU0JtYjNKdElHWmhjM1JoTENCelpYQmhjbUYwYjNKY2JpQWdjSEp2ZEdWamRHVmtJRjl1YjNSaGRHbHZiam9nVGs5VVFWUkpUMDQ3SUM4dklHTjFjbkpsYm5RZ2JtOTBZWFJwYjI0Z0tIZHBkR2h2ZFhRZ09sTkZVVHBPVkN3Z1pYUmpMaWxjYmlBZ2NISnZkR1ZqZEdWa0lGOWtaV1poZFd4MFIyRndVM2x0WW05c09pQnpkSEpwYm1jN1hHNGdJSEJ5YjNSbFkzUmxaQ0J6ZEdGMGFXTWdjbVZoWkc5dWJIa2dYMlJsWm1GMWJIUkhZWEJUZVcxaWIyeHpSR2xqZENBOUlIdGNiaUFnSUNCSVJVeE5PaUFuS2ljc1hHNGdJQ0FnVTBWUVFWSkJWRTlTT2lBbkp5eGNiaUFnSUNCR1FWTlVRVG9nSnkwbkxGeHVJQ0I5TzF4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ2NtVmhaRzl1YkhrZ1VHVndkR2xrWlVaaGMzUmhRV3h3YUdGaVpYUWdQU0J1WlhjZ1UyVjBQSE4wY21sdVp6NG9XMXh1SUNBZ0lDZEhKeXdnSjB3bkxDQW5XU2NzSUNkVEp5d2dKMFVuTENBblVTY3NJQ2RFSnl3Z0owNG5MQ0FuUmljc0lDZEJKeXhjYmlBZ0lDQW5TeWNzSUNkU0p5d2dKMGduTENBblF5Y3NJQ2RXSnl3Z0oxQW5MQ0FuVnljc0lDZEpKeXdnSjAwbkxDQW5WQ2NzWEc0Z0lGMHBPMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJSEpsWVdSdmJteDVJRVJ1WVVaaGMzUmhRV3h3YUdGaVpYUWdQU0J1WlhjZ1UyVjBQSE4wY21sdVp6NG9XeWRCSnl3Z0owTW5MQ0FuUnljc0lDZFVKMTBwTzF4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUhKbFlXUnZibXg1SUZKdVlVWmhjM1JoUVd4d2FHRmlaWFFnUFNCdVpYY2dVMlYwUEhOMGNtbHVaejRvV3lkQkp5d2dKME1uTENBblJ5Y3NJQ2RWSjEwcE8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdjMlYwVlc1cGRITlViMFpoYzNSaFEyOXNkVzF1S0dOdmJEb2dSRWN1UTI5c2RXMXVLU0I3WEc0Z0lDQWdhV1lnS0dOdmJDNXpaVzFVZVhCbElDRTlQU0JFUnk1VFJVMVVXVkJGTGsxQlExSlBUVTlNUlVOVlRFVXBYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0owWmhjM1JoSUdOdmJIVnRiaUJ0ZFhOMElHSmxJRTFCUTFKUFRVOU1SVU5WVEVVbktUdGNibHh1SUNBZ0lHTnZibk4wSUhOMFlYUnpPaUJUWlhGRGIyeFRkR0YwY3lBOUlHZGxkRk4wWVhSektHTnZiQ3dnTlN3Z2MzQnNhWFIwWlhKQmMwWmhjM1JoS1R0Y2JpQWdJQ0JqYjI1emRDQmhiR2xuYm1Wa0lEMGdjM1JoZEhNdWMyRnRaVXhsYm1kMGFDQS9JQ2RUUlZFdVRWTkJKeUE2SUNkVFJWRW5PMXh1SUNBZ0lHTnZibk4wSUdGc2NHaGhZbVYwSUQwZ1pHVjBaV04wUVd4d2FHRmlaWFFvYzNSaGRITXBPMXh1WEc0Z0lDQWdZMjlzTG5ObGRGUmhaeWhFUnk1VVFVZFRMbFZPU1ZSVExDQk9UMVJCVkVsUFRpNUdRVk5VUVNrN1hHNGdJQ0FnWTI5c0xuTmxkRlJoWnloVVFVZFRMbUZzYVdkdVpXUXNJR0ZzYVdkdVpXUXBPMXh1SUNBZ0lHTnZiQzV6WlhSVVlXY29WRUZIVXk1aGJIQm9ZV0psZEN3Z1lXeHdhR0ZpWlhRcE8xeHVJQ0I5WEc1Y2JpQWdjSEp2ZEdWamRHVmtJR2RsZENCMWJtbDBjeWdwT2lCemRISnBibWNnZXlCeVpYUjFjbTRnZEdocGN5NWZkVzVwZEhNN0lIMWNibHh1SUNCd2NtOTBaV04wWldRZ1oyVjBJR052YkhWdGJpZ3BPaUJFUnk1RGIyeDFiVzRnZXlCeVpYUjFjbTRnZEdocGN5NWZZMjlzZFcxdU95QjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDQnViM1JoZEdsdmJpZ3BPaUJPVDFSQlZFbFBUaUI3SUhKbGRIVnliaUIwYUdsekxsOXViM1JoZEdsdmJqc2dmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUWdaR1ZtWVhWc2RFZGhjRk41YldKdmJDZ3BPaUJ6ZEhKcGJtY2dleUJ5WlhSMWNtNGdkR2hwY3k1ZlpHVm1ZWFZzZEVkaGNGTjViV0p2YkRzZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhRZ2MyVndZWEpoZEc5eUtDazZJSE4wY21sdVp5QjhJSFZ1WkdWbWFXNWxaQ0I3WEc0Z0lDQWdZMjl1YzNRZ2MyVndZWEpoZEc5eU9pQnpkSEpwYm1jZ2ZDQjFibVJsWm1sdVpXUWdQU0IwYUdsekxtTnZiSFZ0Ymk1blpYUlVZV2NvVkVGSFV5NXpaWEJoY21GMGIzSXBJRDgvSUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0JwWmlBb2RHaHBjeTV1YjNSaGRHbHZiaUE5UFQwZ1RrOVVRVlJKVDA0dVUwVlFRVkpCVkU5U0lDWW1JSE5sY0dGeVlYUnZjaUE5UFQwZ2RXNWtaV1pwYm1Wa0tWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dCVFpYQmhjbUYwYjNJZ2FYTWdiV0Z1WkdGMGIzSjVJQ0JtYjNJZ1kyOXNkVzF1SUNja2UzUm9hWE11WTI5c2RXMXVMbTVoYldWOUp5QnZaaUJ1YjNSaGRHbHZiaUFuSkh0MGFHbHpMbTV2ZEdGMGFXOXVmU2N1WUNrN1hHNGdJQ0FnY21WMGRYSnVJSE5sY0dGeVlYUnZjanRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhRZ1lXeHBaMjVsWkNncE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUdOdmJuTjBJR0ZzYVdkdVpXUWdQU0IwYUdsekxtTnZiSFZ0Ymk1blpYUlVZV2NvVkVGSFV5NWhiR2xuYm1Wa0tUdGNibHh1SUNBZ0lDOHZJRlJCUjFNdVlXeHBaMjVsWkNCcGN5QnRZVzVrWVhSdmNua2dabTl5SUdOdmJIVnRibk1nYjJZZ1RrOVVRVlJKVDA0dVJrRlRWRUVnWVc1a0lFNVBWRUZVU1U5T0xsTkZVRUZTUVZSUFVseHVJQ0FnSUdsbUlDZ2hZV3hwWjI1bFpDQW1KaUFvZEdocGN5NXBjMFpoYzNSaEtDa2dmSHdnZEdocGN5NXBjMU5sY0dGeVlYUnZjaWdwS1NsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVkdGbklHRnNhV2R1WldRZ2JtOTBJSE5sZENjcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUdGc2FXZHVaV1E3WEc0Z0lIMWNibHh1SUNBdktpb2dRV3h3YUdGaVpYUWdibUZ0WlNBb2RYQndaWElnWTJGelpTa2dLaTljYmlBZ2NIVmliR2xqSUdkbGRDQmhiSEJvWVdKbGRDZ3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lHTnZibk4wSUdGc2NHaGhZbVYwSUQwZ2RHaHBjeTVqYjJ4MWJXNHVaMlYwVkdGbktGUkJSMU11WVd4d2FHRmlaWFFwTzF4dVhHNGdJQ0FnTHk4Z1ZFRkhVeTVoYkhCb1lXSmxkQ0JwY3lCdFlXNWtZWFJ2Y25rZ1ptOXlJR052YkhWdGJuTWdiMllnVGs5VVFWUkpUMDR1UmtGVFZFRWdZVzVrSUU1UFZFRlVTVTlPTGxORlVFRlNRVlJQVWx4dUlDQWdJR2xtSUNnaFlXeHdhR0ZpWlhRZ0ppWWdLSFJvYVhNdWFYTkdZWE4wWVNncElIeDhJSFJvYVhNdWFYTlRaWEJoY21GMGIzSW9LU2twWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMVJoWnlCaGJIQm9ZV0psZENCdWIzUWdjMlYwSnlrN1hHNWNiaUFnSUNCeVpYUjFjbTRnWVd4d2FHRmlaWFE3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMFFXeHdhR0ZpWlhSVGFYcGxLQ2s2SUc1MWJXSmxjaUI3WEc0Z0lDQWdhV1lnS0hSb2FYTXVibTkwWVhScGIyNGdQVDBnVGs5VVFWUkpUMDR1U0VWTVRTQjhmQ0IwYUdsekxtRnNjR2hoWW1WMElEMDlJRUZNVUVoQlFrVlVMbFZPS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JoYkhCb1lXSmxkRk5wZW1WVGRISWdQU0IwYUdsekxtTnZiSFZ0Ymk1blpYUlVZV2NvVkVGSFV5NWhiSEJvWVdKbGRGTnBlbVVwTzF4dUlDQWdJQ0FnYkdWMElHRnNjR2hoWW1WMFUybDZaVG9nYm5WdFltVnlPMXh1SUNBZ0lDQWdhV1lnS0dGc2NHaGhZbVYwVTJsNlpWTjBjaWtnZTF4dUlDQWdJQ0FnSUNCaGJIQm9ZV0psZEZOcGVtVWdQU0J3WVhKelpVbHVkQ2hoYkhCb1lXSmxkRk5wZW1WVGRISXBPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdMeThnWTJGc1kzVnNZWFJsSUdGc2NHaGhZbVYwVTJsNlpTQnZiaUJrWlcxaGJtUmNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2MzQnNhWFIwWlhJNklGTndiR2wwZEdWeVJuVnVZeUE5SUdkbGRGTndiR2wwZEdWeVJtOXlRMjlzZFcxdUtIUm9hWE11WTI5c2RXMXVLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjM1JoZEhNZ1BTQm5aWFJUZEdGMGN5aDBhR2x6TG1OdmJIVnRiaXdnTVN3Z2MzQnNhWFIwWlhJcE8xeHVJQ0FnSUNBZ0lDQmhiSEJvWVdKbGRGTnBlbVVnUFNCUFltcGxZM1F1YTJWNWN5aHpkR0YwY3k1bWNtVnhLUzVzWlc1bmRHZzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnlaWFIxY200Z1lXeHdhR0ZpWlhSVGFYcGxPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCemQybDBZMmdnS0hSb2FYTXVZV3h3YUdGaVpYUXBJSHRjYmlBZ0lDQWdJR05oYzJVZ1FVeFFTRUZDUlZRdVVGUTZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQXlNRHRjYmlBZ0lDQWdJR05oYzJVZ1FVeFFTRUZDUlZRdVJFNUJPbHh1SUNBZ0lDQWdZMkZ6WlNCQlRGQklRVUpGVkM1U1RrRTZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQTBPMXh1SUNBZ0lDQWdZMkZ6WlNBblRsUW5PbHh1SUNBZ0lDQWdJQ0JqYjI1emIyeGxMbmRoY200b1lGVnVaWGh3WldOMFpXUWdZV3h3YUdGaVpYUWdKMDVVSnk1Z0tUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlEUTdYRzRnSUNBZ0lDQmtaV1poZFd4ME9seHVJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lGVnVaWGh3WldOMFpXUWdZV3h3YUdGaVpYUWdKeVI3ZEdocGN5NWhiSEJvWVdKbGRIMG5MbUFwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhSQmJIQm9ZV0psZEVselRYVnNkR2xqYUdGeUtDazZJR0p2YjJ4bFlXNGdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtNXZkR0YwYVc5dUlEMDlJRTVQVkVGVVNVOU9Ma2hGVEUwZ2ZId2dkR2hwY3k1aGJIQm9ZV0psZENBOVBTQkJURkJJUVVKRlZDNVZUaWxjYmlBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG1OdmJIVnRiaTVuWlhSVVlXY29WRUZIVXk1aGJIQm9ZV0psZEVselRYVnNkR2xqYUdGeUtTQTlQU0FuZEhKMVpTYzdYRzRnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdselJtRnpkR0VvS1RvZ1ltOXZiR1ZoYmlCN0lISmxkSFZ5YmlCMGFHbHpMbTV2ZEdGMGFXOXVJRDA5UFNCT1QxUkJWRWxQVGk1R1FWTlVRVHNnZlZ4dVhHNGdJSEIxWW14cFl5QnBjMU5sY0dGeVlYUnZjaWdwT2lCaWIyOXNaV0Z1SUhzZ2NtVjBkWEp1SUhSb2FYTXVibTkwWVhScGIyNGdQVDA5SUU1UFZFRlVTVTlPTGxORlVFRlNRVlJQVWpzZ2ZWeHVYRzRnSUhCMVlteHBZeUJwYzBobGJHMG9LVG9nWW05dmJHVmhiaUI3SUhKbGRIVnliaUIwYUdsekxtNXZkR0YwYVc5dUlEMDlQU0JPVDFSQlZFbFBUaTVJUlV4Tk95QjlYRzVjYmlBZ2NIVmliR2xqSUdselVtNWhLQ2s2SUdKdmIyeGxZVzRnZXlCeVpYUjFjbTRnZEdocGN5NWhiSEJvWVdKbGRDQTlQVDBnUVV4UVNFRkNSVlF1VWs1Qk95QjlYRzVjYmlBZ2NIVmliR2xqSUdselJHNWhLQ2s2SUdKdmIyeGxZVzRnZXlCeVpYUjFjbTRnZEdocGN5NWhiSEJvWVdKbGRDQTlQVDBnUVV4UVNFRkNSVlF1UkU1Qk95QjlYRzVjYmlBZ2NIVmliR2xqSUdselVHVndkR2xrWlNncE9pQmliMjlzWldGdUlIc2djbVYwZFhKdUlIUm9hWE11WVd4d2FHRmlaWFFnUFQwOUlFRk1VRWhCUWtWVUxsQlVPeUI5WEc1Y2JpQWdjSFZpYkdsaklHbHpUWE5oS0NrNklHSnZiMnhsWVc0Z2V5QnlaWFIxY200Z2RHaHBjeTVoYkdsbmJtVmtJRDhnZEdocGN5NWhiR2xuYm1Wa0xuUnZWWEJ3WlhKRFlYTmxLQ2t1YVc1amJIVmtaWE1vSjAxVFFTY3BJRG9nWm1Gc2MyVTdJSDFjYmx4dUlDQXZLaW9nUVhOemIyTnBZWFJsSUc1dmRHRjBhVzl1SUhSNWNHVnpJSGRwZEdnZ2RHaGxJR052Y25KbGMzQnZibVJwYm1jZ2RXNXBkSE1nS2k5Y2JpQWdMeW9xWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMDVQVkVGVVNVOU9mU0FnSUNBZ1RtOTBZWFJwYjI0Z1lYTnpiMk5wWVhSbFpDQjNhWFJvSUhSb1pTQjFibWwwY3lCMGVYQmxYRzRnSUNBcUwxeHVJQ0J3Y205MFpXTjBaV1FnWjJWMFRtOTBZWFJwYjI0b0tUb2dUazlVUVZSSlQwNGdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxuVnVhWFJ6TG5SdlRHOTNaWEpEWVhObEtDa3VjM1JoY25SelYybDBhQ2hPVDFSQlZFbFBUaTVHUVZOVVFTa3BYRzRnSUNBZ0lDQnlaWFIxY200Z1RrOVVRVlJKVDA0dVJrRlRWRUU3WEc0Z0lDQWdaV3h6WlNCcFppQW9kR2hwY3k1MWJtbDBjeTUwYjB4dmQyVnlRMkZ6WlNncExuTjBZWEowYzFkcGRHZ29UazlVUVZSSlQwNHVVMFZRUVZKQlZFOVNLU2xjYmlBZ0lDQWdJSEpsZEhWeWJpQk9UMVJCVkVsUFRpNVRSVkJCVWtGVVQxSTdYRzRnSUNBZ1pXeHpaU0JwWmlBb2RHaHBjeTUxYm1sMGN5NTBiMHh2ZDJWeVEyRnpaU2dwTG5OMFlYSjBjMWRwZEdnb1RrOVVRVlJKVDA0dVNFVk1UU2twWEc0Z0lDQWdJQ0J5WlhSMWNtNGdUazlVUVZSSlQwNHVTRVZNVFR0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUVOdmJIVnRiaUFuSkh0MGFHbHpMbU52YkhWdGJpNXVZVzFsZlNjZ2FHRnpJSFZ1Wlhod1pXTjBaV1FnYm05MFlYUnBiMjRnSnlSN2RHaHBjeTUxYm1sMGMzMG5MbUFwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlNCaElHNWxkeUJsYlhCMGVTQmpiMngxYlc0Z2IyWWdkR2hsSUhOd1pXTnBabWxsWkNCdWIzUmhkR2x2YmlCMGVYQmxJR0Z1WkNCMGFHVWdjMkZ0WlZ4dUlDQWdLaUJzWlc1bmRHZ2dZWE1nWTI5c2RXMXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VGs5VVFWUkpUMDU5SUhSaGNtZGxkRTV2ZEdGMGFXOXVYRzRnSUNBcUlFQnlaWFIxY200Z2UwUkhMa052YkhWdGJuMWNiaUFnSUNvdlhHNGdJSEJ5YjNSbFkzUmxaQ0JuWlhST1pYZERiMngxYlc0b2RHRnlaMlYwVG05MFlYUnBiMjQ2SUU1UFZFRlVTVTlPS1RvZ1JFY3VRMjlzZFcxdUlIdGNiaUFnSUNCamIyNXpkQ0JqYjJ3Z1BTQjBhR2x6TG1OdmJIVnRianRjYmlBZ0lDQmpiMjV6ZENCc1pXNGdQU0JqYjJ3dWJHVnVaM1JvTzF4dUlDQWdJR052Ym5OMElHNWhiV1VnUFNCMFlYSm5aWFJPYjNSaGRHbHZiaTUwYjB4dmQyVnlRMkZ6WlNncElDc2dKeWduSUNzZ1kyOXNMbTVoYldVZ0t5QW5LU2M3WEc0Z0lDQWdZMjl1YzNRZ2JtVjNRMjlzVG1GdFpTQTlJR052YkM1a1lYUmhSbkpoYldVdVkyOXNkVzF1Y3k1blpYUlZiblZ6WldST1lXMWxLRzVoYldVcE8xeHVJQ0FnSUdOdmJuTjBJRzVsZDBOdmJIVnRiaUE5SUVSSExrTnZiSFZ0Ymk1bWNtOXRUR2x6ZENnbmMzUnlhVzVuSnl3Z2JtVjNRMjlzVG1GdFpTd2dibVYzSUVGeWNtRjVLR3hsYmlrdVptbHNiQ2duSnlrcE8xeHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1elpXMVVlWEJsSUQwZ1JFY3VVMFZOVkZsUVJTNU5RVU5TVDAxUFRFVkRWVXhGTzF4dUlDQWdJRzVsZDBOdmJIVnRiaTV6WlhSVVlXY29SRWN1VkVGSFV5NVZUa2xVVXl3Z2RHRnlaMlYwVG05MFlYUnBiMjRwTzF4dUlDQWdJRzVsZDBOdmJIVnRiaTV6WlhSVVlXY29SRWN1VkVGSFV5NURSVXhNWDFKRlRrUkZVa1ZTTENBblRXRmpjbTl0YjJ4bFkzVnNaU2NwTzF4dVhHNGdJQ0FnWTI5dWMzUWdjM0pqUVd4cFoyNWxaQ0E5SUdOdmJDNW5aWFJVWVdjb1ZFRkhVeTVoYkdsbmJtVmtLVHRjYmlBZ0lDQnBaaUFvYzNKalFXeHBaMjVsWkNsY2JpQWdJQ0FnSUc1bGQwTnZiSFZ0Ymk1elpYUlVZV2NvVkVGSFV5NWhiR2xuYm1Wa0xDQnpjbU5CYkdsbmJtVmtLVHRjYmx4dUlDQWdJR052Ym5OMElITnlZMEZzY0doaFltVjBJRDBnWTI5c0xtZGxkRlJoWnloVVFVZFRMbUZzY0doaFltVjBLVHRjYmlBZ0lDQnBaaUFvYzNKalFXeHdhR0ZpWlhRcFhHNGdJQ0FnSUNCdVpYZERiMngxYlc0dWMyVjBWR0ZuS0ZSQlIxTXVZV3h3YUdGaVpYUXNJSE55WTBGc2NHaGhZbVYwS1R0Y2JseHVJQ0FnSUd4bGRDQnpjbU5CYkhCb1lXSmxkRk5wZW1VNklITjBjbWx1WnlBOUlHTnZiQzVuWlhSVVlXY29WRUZIVXk1aGJIQm9ZV0psZEZOcGVtVXBPMXh1SUNBZ0lHbG1JQ2h6Y21OQmJIQm9ZV0psZEZOcGVtVXBYRzRnSUNBZ0lDQnVaWGREYjJ4MWJXNHVjMlYwVkdGbktGUkJSMU11WVd4d2FHRmlaWFJUYVhwbExDQnpjbU5CYkhCb1lXSmxkRk5wZW1VcE8xeHVYRzRnSUNBZ1kyOXVjM1FnYzNKalFXeHdhR0ZpWlhSSmMwMTFiSFJwWTJoaGNqb2djM1J5YVc1bklEMGdZMjlzTG1kbGRGUmhaeWhVUVVkVExtRnNjR2hoWW1WMFNYTk5kV3gwYVdOb1lYSXBPMXh1SUNBZ0lHbG1JQ2h6Y21OQmJIQm9ZV0psZEVselRYVnNkR2xqYUdGeUlDRTlQU0IxYm1SbFptbHVaV1FwWEc0Z0lDQWdJQ0J1WlhkRGIyeDFiVzR1YzJWMFZHRm5LRlJCUjFNdVlXeHdhR0ZpWlhSSmMwMTFiSFJwWTJoaGNpd2djM0pqUVd4d2FHRmlaWFJKYzAxMWJIUnBZMmhoY2lrN1hHNWNiaUFnSUNCcFppQW9kR0Z5WjJWMFRtOTBZWFJwYjI0Z1BUMGdUazlVUVZSSlQwNHVTRVZNVFNrZ2UxeHVJQ0FnSUNBZ2MzSmpRV3h3YUdGaVpYUlRhWHBsSUQwZ2RHaHBjeTVuWlhSQmJIQm9ZV0psZEZOcGVtVW9LUzUwYjFOMGNtbHVaeWdwTzF4dUlDQWdJQ0FnYm1WM1EyOXNkVzF1TG5ObGRGUmhaeWhVUVVkVExtRnNjR2hoWW1WMFUybDZaU3dnYzNKalFXeHdhR0ZpWlhSVGFYcGxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2JtVjNRMjlzZFcxdU8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU55WldGMFpTQmhJRzVsZHlCbGJYQjBlU0JqYjJ4MWJXNGdkWE5wYm1jZ2RHVnRjR3hoZEdWRGIyd2dZWE1nWVNCMFpXMXdiR0YwWlZ4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUkhMa052YkhWdGJuMGdkR1Z0Y0d4aGRHVkRiMndnSUhSb1pTQndjbTl3WlhKMGFXVnpJR0Z1WkNCMWJtbDBjeUJ2WmlCMGFHbHpJR052YkhWdGJpQmhjbVVnZFhObFpDQmhjeUJoWEc0Z0lDQXFJSFJsYlhCc1lYUmxJSFJ2SUdKMWFXeGtJSFJvWlNCdVpYY2diMjVsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJITGtOdmJIVnRibjFjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwVG1WM1EyOXNkVzF1S0hSbGJYQnNZWFJsUTI5c09pQkVSeTVEYjJ4MWJXNHBPaUJFUnk1RGIyeDFiVzRnZTF4dUlDQWdJR052Ym5OMElHTnZiRG9nVlc1cGRITklZVzVrYkdWeUlEMGdibVYzSUZWdWFYUnpTR0Z1Wkd4bGNpaDBaVzF3YkdGMFpVTnZiQ2s3WEc0Z0lDQWdZMjl1YzNRZ2RHRnlaMlYwVG05MFlYUnBiMjRnUFNCamIyd3VibTkwWVhScGIyNDdYRzRnSUNBZ2NtVjBkWEp1SUdOdmJDNW5aWFJPWlhkRGIyeDFiVzRvZEdGeVoyVjBUbTkwWVhScGIyNHBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVFZ2FHVnNjR1Z5SUdaMWJtTjBhVzl1SUdOb1pXTnJhVzVuSUhSb1pTQjJZV3hwWkdsMGVTQnZaaUIwYUdVZ0ozVnVhWFJ6SnlCemRISnBibWRjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhWdWFYUnpJQ0IwYUdVZ2MzUnlhVzVuSUhSdklHSmxJSFpoYkdsa1lYUmxaRnh1SUNBZ0tpQkFjbVYwZFhKdUlIdGliMjlzWldGdWZWeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCMWJtbDBjMU4wY21sdVowbHpWbUZzYVdRb2RXNXBkSE02SUhOMGNtbHVaeWs2SUdKdmIyeGxZVzRnZTF4dUlDQWdJSFZ1YVhSeklEMGdkVzVwZEhNdWRHOU1iM2RsY2tOaGMyVW9LVHRjYmlBZ0lDQmpiMjV6ZENCd2NtVm1hWGhsY3lBOUlGdE9UMVJCVkVsUFRpNUdRVk5VUVN3Z1RrOVVRVlJKVDA0dVUwVlFRVkpCVkU5U0xDQk9UMVJCVkVsUFRpNUlSVXhOWFR0Y2JpQWdJQ0JqYjI1emRDQndiM04wWm1sNFpYTWdQU0JiSjNKdVlTY3NJQ2RrYm1FbkxDQW5jSFFuWFR0Y2JseHVJQ0FnSUdOdmJuTjBJSEJ5WldacGVFTnlhWFJsY21sdmJpQTlJSEJ5WldacGVHVnpMbk52YldVb0tIQXBJRDArSUhWdWFYUnpMbk4wWVhKMGMxZHBkR2dvY0M1MGIweHZkMlZ5UTJGelpTZ3BLU2s3WEc0Z0lDQWdjbVYwZFhKdUlIQnlaV1pwZUVOeWFYUmxjbWx2Ymp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRiMjV6ZEhKMVkzUWdZU0J1WlhjZ1kyOXNkVzF1SUc5bUlITmxiV0Z1ZEdsaklIUjVjR1VnVFVGRFVrOU5UMHhGUTFWTVJTQm1jbTl0SUhSb1pTQnNhWE4wSUc5bVhHNGdJQ0FxSUhOd1pXTnBabWxsWkNCd1lYSmhiV1YwWlhKelhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQWdJQ0JzWlc0Z0lIUm9aU0JzWlc1bmRHZ2diMllnZEdobElHNWxkeUJqYjJ4MWJXNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUNBZ0lHNWhiV1VnSUhSb1pTQnVZVzFsSUc5bUlIUm9aU0J1WlhjZ1kyOXNkVzF1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQWdJQ0IxYm1sMGN5QWdkR2hsSUhWdWFYUnpJRzltSUhSb1pTQnVaWGNnWTI5c2RXMXVYRzRnSUNBcUlFQnlaWFIxY200Z2UwUkhMa052YkhWdGJuMWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBUbVYzUTI5c2RXMXVSbkp2YlZCaGNtRnRjeWhjYmlBZ0lDQnNaVzQ2SUc1MWJXSmxjaXhjYmlBZ0lDQnVZVzFsT2lCemRISnBibWNzWEc0Z0lDQWdkVzVwZEhNNklITjBjbWx1WjF4dUlDQXBPaUJFUnk1RGIyeDFiVzRnZTF4dUlDQWdJQzh2SUZkQlVrNUpUa2M2SUdsdUlIUm9hWE1nYVcxd2JHVnRaVzUwWVhScGIyNGdhWE1nYVhNZ2FXMXdiM056YVdKc1pTQjBieUIyWlhKcFpua2dkR2hsSUhWdWFYRjFaVzVsYzNOY2JpQWdJQ0F2THlCdlppQjBhR1VnYm1WM0lHTnZiSFZ0YmlkeklHNWhiV1ZjYmlBZ0lDQXZMeUJVVDBSUE9pQjJaWEpwWm5rZ2RHaGxJSFpoYkdsa2FYUjVJRzltSUhWdWFYUnpJSEJoY21GdFpYUmxjbHh1SUNBZ0lHbG1JQ2doVlc1cGRITklZVzVrYkdWeUxuVnVhWFJ6VTNSeWFXNW5TWE5XWVd4cFpDaDFibWwwY3lrcFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjBsdWRtRnNhV1FnWm05eWJXRjBJRzltSUZ4Y0ozVnVhWFJ6WEZ3bklIQmhjbUZ0WlhSbGNpY3BPMXh1SUNBZ0lHTnZibk4wSUc1bGQwTnZiSFZ0YmlBOUlFUkhMa052YkhWdGJpNW1jbTl0VEdsemRDZ25jM1J5YVc1bkp5d2dibUZ0WlN3Z2JtVjNJRUZ5Y21GNUtHeGxiaWt1Wm1sc2JDZ25KeWtwTzF4dUlDQWdJRzVsZDBOdmJIVnRiaTV6WlcxVWVYQmxJRDBnUkVjdVUwVk5WRmxRUlM1TlFVTlNUMDFQVEVWRFZVeEZPMXh1SUNBZ0lHNWxkME52YkhWdGJpNXpaWFJVWVdjb1JFY3VWRUZIVXk1VlRrbFVVeXdnZFc1cGRITXBPMXh1SUNBZ0lISmxkSFZ5YmlCdVpYZERiMngxYlc0N1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9ZMjlzT2lCRVJ5NURiMngxYlc0cElIdGNiaUFnSUNCMGFHbHpMbDlqYjJ4MWJXNGdQU0JqYjJ3N1hHNGdJQ0FnWTI5dWMzUWdkVzVwZEhNZ1BTQjBhR2x6TGw5amIyeDFiVzR1ZEdGbmMxdEVSeTVVUVVkVExsVk9TVlJUWFR0Y2JpQWdJQ0JwWmlBb2RXNXBkSE1nSVQwOUlHNTFiR3dwWEc0Z0lDQWdJQ0IwYUdsekxsOTFibWwwY3lBOUlIVnVhWFJ6TzF4dUlDQWdJR1ZzYzJWY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVlc1cGRITWdZWEpsSUc1dmRDQnpjR1ZqYVdacFpXUWdhVzRnWTI5c2RXMXVKeWs3WEc0Z0lDQWdkR2hwY3k1ZmJtOTBZWFJwYjI0Z1BTQjBhR2x6TG1kbGRFNXZkR0YwYVc5dUtDazdYRzRnSUNBZ2RHaHBjeTVmWkdWbVlYVnNkRWRoY0ZONWJXSnZiQ0E5SUNoMGFHbHpMbWx6Um1GemRHRW9LU2tnUHlCVmJtbDBjMGhoYm1Sc1pYSXVYMlJsWm1GMWJIUkhZWEJUZVcxaWIyeHpSR2xqZEM1R1FWTlVRU0E2WEc0Z0lDQWdJQ0FvZEdocGN5NXBjMGhsYkcwb0tTa2dQeUJWYm1sMGMwaGhibVJzWlhJdVgyUmxabUYxYkhSSFlYQlRlVzFpYjJ4elJHbGpkQzVJUlV4TklEcGNiaUFnSUNBZ0lDQWdWVzVwZEhOSVlXNWtiR1Z5TGw5a1pXWmhkV3gwUjJGd1UzbHRZbTlzYzBScFkzUXVVMFZRUVZKQlZFOVNPMXh1WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbU52YkhWdGJpNTBZV2R6TG1oaGN5aFVRVWRUTG1Gc2FXZHVaV1FwS1NCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1cGMwWmhjM1JoS0NrZ2ZId2dkR2hwY3k1cGMxTmxjR0Z5WVhSdmNpZ3BLVnh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRVp2Y2lCamIyeDFiVzRnSnlSN2RHaHBjeTVqYjJ4MWJXNHVibUZ0WlgwbklHOW1JRzV2ZEdGMGFXOXVJQ2NrZTNSb2FYTXVibTkwWVhScGIyNTlKeUJnSUN0Y2JpQWdJQ0FnSUNBZ0lDQmdkR0ZuSUNja2UxUkJSMU11WVd4cFoyNWxaSDBuSUdseklHMWhibVJoZEc5eWVTNWdLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJwWmlBb0lYUm9hWE11WTI5c2RXMXVMblJoWjNNdWFHRnpLRlJCUjFNdVlXeHdhR0ZpWlhSVGFYcGxLU2tnZTF4dUlDQWdJQzh2SUNBZ2FXWWdLSFJvYVhNdWFYTklaV3h0S0NrcFhHNGdJQ0FnTHk4Z0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdSbTl5SUdOdmJIVnRiaUFuSkh0MGFHbHpMbU52YkhWdGJpNXVZVzFsZlNjZ2IyWWdibTkwWVhScGIyNGdKeVI3ZEdocGN5NXViM1JoZEdsdmJuMG5JR0FnSzF4dUlDQWdJQzh2SUNBZ0lDQWdJR0IwWVdjZ0p5UjdWRUZIVXk1aGJIQm9ZV0psZEZOcGVtVjlKeUJwY3lCdFlXNWtZWFJ2Y25rdVlDazdYRzRnSUNBZ0x5OGdJQ0JsYkhObElHbG1JQ2hiSjFWT0oxMHVhVzVqYkhWa1pYTW9kR2hwY3k1aGJIQm9ZV0psZENrcFhHNGdJQ0FnTHk4Z0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdSbTl5SUdOdmJIVnRiaUFuSkh0MGFHbHpMbU52YkhWdGJpNXVZVzFsZlNjZ2IyWWdZV3h3YUdGaVpYUWdKeVI3ZEdocGN5NWhiSEJvWVdKbGRIMG5JR0FnSzF4dUlDQWdJQzh2SUNBZ0lDQWdJR0IwWVdjZ0p5UjdWRUZIVXk1aGJIQm9ZV0psZEZOcGVtVjlKeUJwY3lCdFlXNWtZWFJ2Y25rdVlDazdYRzRnSUNBZ0x5OGdmVnh1WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbU52YkhWdGJpNTBZV2R6TG1oaGN5aFVRVWRUTG1Gc2NHaGhZbVYwU1hOTmRXeDBhV05vWVhJcEtTQjdYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NXBjMGhsYkcwb0tTbGNiaUFnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQkdiM0lnWTI5c2RXMXVJQ2NrZTNSb2FYTXVZMjlzZFcxdUxtNWhiV1Y5SnlCdlppQnViM1JoZEdsdmJpQW5KSHQwYUdsekxtNXZkR0YwYVc5dWZTY2dZQ0FyWEc0Z0lDQWdJQ0FnSUNBZ1lIUmhaeUFuSkh0VVFVZFRMbUZzY0doaFltVjBTWE5OZFd4MGFXTm9ZWEo5SnlCcGN5QnRZVzVrWVhSdmNua3VZQ2s3WEc0Z0lDQWdJQ0JsYkhObElHbG1JQ2hiSjFWT0oxMHVhVzVqYkhWa1pYTW9kR2hwY3k1aGJIQm9ZV0psZENrcFhHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1JtOXlJR052YkhWdGJpQW5KSHQwYUdsekxtTnZiSFZ0Ymk1dVlXMWxmU2NnYjJZZ1lXeHdhR0ZpWlhRZ0p5UjdkR2hwY3k1aGJIQm9ZV0psZEgwbklHQWdLMXh1SUNBZ0lDQWdJQ0FnSUdCMFlXY2dKeVI3VkVGSFV5NWhiSEJvWVdKbGRFbHpUWFZzZEdsamFHRnlmU2NnYVhNZ2JXRnVaR0YwYjNKNUxtQXBPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVJbDE5IiwiZXhwb3J0IGZ1bmN0aW9uIGVycm9yVG9Db25zb2xlKGVycikge1xuICAgIHZhciBfYTtcbiAgICBpZiAodHlwZW9mIGVyciA9PT0gJ3N0cmluZycgfHwgZXJyIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBlcnI7XG4gICAgfVxuICAgIGVsc2UgaWYgKCckdGhyb3duSnNFcnJvcicgaW4gZXJyKSB7XG4gICAgICAgIHJldHVybiBlcnJvclRvQ29uc29sZShlcnJbJyR0aHJvd25Kc0Vycm9yJ10pO1xuICAgIH1cbiAgICBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICByZXR1cm4gKF9hID0gZXJyLnN0YWNrKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBlcnIubWVzc2FnZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBlcnIudG9TdHJpbmcoKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gcmVjdFRvQ29uc29sZShyZWN0KSB7XG4gICAgcmV0dXJuIGAoeD0ke3JlY3QueH0sIHk9JHtyZWN0Lnl9LCB3PSR7cmVjdC53aWR0aH0sIGg9JHtyZWN0LmhlaWdodH0pYDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRHOHRZMjl1YzI5c1pTNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW5SdkxXTnZibk52YkdVdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJTMEVzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4SFFVRlJPenRKUVVOeVF5eEpRVUZKTEU5QlFVOHNSMEZCUnl4TFFVRkxMRkZCUVZFc1NVRkJTU3hIUVVGSExGbEJRVmtzVFVGQlRTeEZRVUZGTzFGQlEzQkVMRTlCUVU4c1IwRkJZU3hEUVVGRE8wdEJRM1JDTzFOQlFVMHNTVUZCU1N4blFrRkJaMElzU1VGQlNTeEhRVUZITEVWQlFVVTdVVUZEYkVNc1QwRkJUeXhqUVVGakxFTkJRVU1zUjBGQlJ5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU01UXp0VFFVRk5MRWxCUVVrc1IwRkJSeXhaUVVGWkxFdEJRVXNzUlVGQlJUdFJRVU12UWl4UFFVRlBMRTFCUVVNc1IwRkJZU3hEUVVGRExFdEJRVXNzYlVOQlFVc3NSMEZCWVN4RFFVRkRMRTlCUVU4c1EwRkJRenRMUVVOMlJEdFRRVUZOTzFGQlEwd3NUMEZCVHl4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03UzBGRGRrSTdRVUZEU0N4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHRkJRV0VzUTBGQlF5eEpRVUZoTzBsQlEzcERMRTlCUVU4c1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNN1FVRkRla1VzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklFUkhJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzlrWnljN1hHNWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1Z5Y205eVZHOURiMjV6YjJ4bEtHVnljam9nWVc1NUtUb2djM1J5YVc1bklIdGNiaUFnYVdZZ0tIUjVjR1Z2WmlCbGNuSWdQVDA5SUNkemRISnBibWNuSUh4OElHVnljaUJwYm5OMFlXNWpaVzltSUZOMGNtbHVaeWtnZTF4dUlDQWdJSEpsZEhWeWJpQmxjbklnWVhNZ2MzUnlhVzVuTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLQ2NrZEdoeWIzZHVTbk5GY25KdmNpY2dhVzRnWlhKeUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdWeWNtOXlWRzlEYjI1emIyeGxLR1Z5Y2xzbkpIUm9jbTkzYmtwelJYSnliM0luWFNrN1hHNGdJSDBnWld4elpTQnBaaUFvWlhKeUlHbHVjM1JoYm1ObGIyWWdSWEp5YjNJcElIdGNiaUFnSUNCeVpYUjFjbTRnS0dWeWNpQmhjeUJGY25KdmNpa3VjM1JoWTJzZ1B6OGdLR1Z5Y2lCaGN5QkZjbkp2Y2lrdWJXVnpjMkZuWlR0Y2JpQWdmU0JsYkhObElIdGNiaUFnSUNCeVpYUjFjbTRnWlhKeUxuUnZVM1J5YVc1bktDazdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEpsWTNSVWIwTnZibk52YkdVb2NtVmpkRG9nUkVjdVVtVmpkQ2s2SUhOMGNtbHVaeUI3WEc0Z0lISmxkSFZ5YmlCZ0tIZzlKSHR5WldOMExuaDlMQ0I1UFNSN2NtVmpkQzU1ZlN3Z2R6MGtlM0psWTNRdWQybGtkR2g5TENCb1BTUjdjbVZqZEM1b1pXbG5hSFI5S1dBN1hHNTlYRzRpWFgwPSIsImltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgZmluZE1vbm9tZXJzLCBwYXJzZUhlbG0sIGdldFBhcnRzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBwcmludExlZnRPckNlbnRlcmVkIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3V0aWxzL2NlbGwtcmVuZGVyZXInO1xuaW1wb3J0IHsgZXJyb3JUb0NvbnNvbGUgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90by1jb25zb2xlJztcbmV4cG9ydCBjbGFzcyBIZWxtQ2VsbFJlbmRlcmVyIGV4dGVuZHMgREcuR3JpZENlbGxSZW5kZXJlciB7XG4gICAgZ2V0IG5hbWUoKSB7IHJldHVybiAnaGVsbSc7IH1cbiAgICBnZXQgY2VsbFR5cGUoKSB7IHJldHVybiAnaGVsbSc7IH1cbiAgICBnZXQgZGVmYXVsdFdpZHRoKCkgeyByZXR1cm4gNDAwOyB9XG4gICAgZ2V0IGRlZmF1bHRIZWlnaHQoKSB7IHJldHVybiAxMDA7IH1cbiAgICBvbk1vdXNlTW92ZShncmlkQ2VsbCwgZSkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG1heExlbmd0aFdvcmRzU3VtID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4udGVtcFsnaGVsbS1zdW0tbWF4TGVuZ3RoV29yZHMnXTtcbiAgICAgICAgICAgIGNvbnN0IG1heEluZGV4ID0gT2JqZWN0LnZhbHVlcyhncmlkQ2VsbC5jZWxsLmNvbHVtbi50ZW1wWydoZWxtLW1heExlbmd0aFdvcmRzJ10pLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBjb25zdCBhcmdzWCA9IGUub2Zmc2V0WCAtIGdyaWRDZWxsLmdyaWRDb2x1bW4ubGVmdCArIChncmlkQ2VsbC5ncmlkQ29sdW1uLmxlZnQgLSBncmlkQ2VsbC5ib3VuZHMueCk7XG4gICAgICAgICAgICBsZXQgbGVmdCA9IDA7XG4gICAgICAgICAgICBsZXQgcmlnaHQgPSBtYXhJbmRleDtcbiAgICAgICAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgbWF4TGVuZ3RoV29yZHNTdW1bbWF4SW5kZXggKyAxXSA9IGFyZ3NYICsgMTtcbiAgICAgICAgICAgIGxldCBtaWQgPSAwO1xuICAgICAgICAgICAgaWYgKGFyZ3NYID4gbWF4TGVuZ3RoV29yZHNTdW1bMF0pIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoIWZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIG1pZCA9IE1hdGguZmxvb3IoKHJpZ2h0ICsgbGVmdCkgLyAyKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3NYID49IG1heExlbmd0aFdvcmRzU3VtW21pZF0gJiYgYXJnc1ggPD0gbWF4TGVuZ3RoV29yZHNTdW1bbWlkICsgMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBtaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJnc1ggPCBtYXhMZW5ndGhXb3Jkc1N1bVttaWRdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodCA9IG1pZCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJnc1ggPiBtYXhMZW5ndGhXb3Jkc1N1bVttaWQgKyAxXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IG1pZCArIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxlZnQgPSAoYXJnc1ggPj0gbWF4TGVuZ3RoV29yZHNTdW1bbGVmdF0pID8gbGVmdCArIDEgOiBsZWZ0O1xuICAgICAgICAgICAgY29uc3QgbW9ub21lcnMgPSBmaW5kTW9ub21lcnMoZ3JpZENlbGwuY2VsbC52YWx1ZSk7XG4gICAgICAgICAgICBsZXQgcyA9IChfYSA9IGdyaWRDZWxsLmNlbGwudmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgbGV0IHN1YlBhcnRzID0gcGFyc2VIZWxtKHMpO1xuICAgICAgICAgICAgbGV0IGFsbFBhcnRzID0gZ2V0UGFydHMoc3ViUGFydHMsIHMpO1xuICAgICAgICAgICAgbGV0IHRvb2x0aXBNZXNzYWdlID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbFBhcnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbm9tZXJzLmhhcyhhbGxQYXJ0c1tpXSkpXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBNZXNzYWdlW2ldID0gdWkuZGl2VihbXG4gICAgICAgICAgICAgICAgICAgICAgICB1aS5kaXZUZXh0KGBNb25vbWVyICR7YWxsUGFydHNbaV19IG5vdCBmb3VuZC5gKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVpLmRpdlRleHQoJ09wZW4gdGhlIENvbnRleHQgUGFuZWwsIHRoZW4gZXhwYW5kIE1hbmFnZSBMaWJyYXJpZXMnKVxuICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICgoKChfYyA9IChfYiA9IHRvb2x0aXBNZXNzYWdlW2xlZnRdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2hpbGROb2Rlcy5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDApID4gMCkpXG4gICAgICAgICAgICAgICAgPyB1aS50b29sdGlwLnNob3codWkuZGl2KHRvb2x0aXBNZXNzYWdlW2xlZnRdKSwgZS54ICsgMTYsIGUueSArIDE2KVxuICAgICAgICAgICAgICAgIDogdWkudG9vbHRpcC5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc3QgZXJyTXNnID0gZXJyb3JUb0NvbnNvbGUoZXJyKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0hlbG06IEhlbG1DZWxsUmVuZGVyZXIub25Nb3VzZU1vdmUoKSBlcnJvcjpcXG4nICsgZXJyTXNnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZW5kZXIoZywgeCwgeSwgdywgaCwgZ3JpZENlbGwsIGNlbGxTdHlsZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGdyaWQgPSBncmlkQ2VsbC5ncmlkUm93ICE9PSAtMSA/IGdyaWRDZWxsLmdyaWQgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuICAgICAgICBjb25zdCBncmF5Q29sb3IgPSAnIzgwODA4MCc7XG4gICAgICAgIGNvbnN0IG1vbm9tZXJzID0gZmluZE1vbm9tZXJzKGdyaWRDZWxsLmNlbGwudmFsdWUpO1xuICAgICAgICBsZXQgcyA9IChfYSA9IGdyaWRDZWxsLmNlbGwudmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICBsZXQgc3ViUGFydHMgPSBwYXJzZUhlbG0ocyk7XG4gICAgICAgIGlmIChtb25vbWVycy5zaXplID09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSB1aS5kaXYoW10sIHsgc3R5bGU6IHsgd2lkdGg6IGAke3d9cHhgLCBoZWlnaHQ6IGAke2h9cHhgIH0gfSk7XG4gICAgICAgICAgICBob3N0LnNldEF0dHJpYnV0ZSgnZGF0YWZvcm1hdCcsICdoZWxtJyk7XG4gICAgICAgICAgICBob3N0LnNldEF0dHJpYnV0ZSgnZGF0YScsIGdyaWRDZWxsLmNlbGwudmFsdWUpO1xuICAgICAgICAgICAgZ3JpZENlbGwuZWxlbWVudCA9IGhvc3Q7XG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IG5ldyBKU0RyYXcyLkVkaXRvcihob3N0LCB7IHdpZHRoOiB3LCBoZWlnaHQ6IGgsIHNraW46ICd3OCcsIHZpZXdvbmx5OiB0cnVlIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb25vbWVycy5zaXplID4gMCkge1xuICAgICAgICAgICAgdyA9IGdyaWQgPyBNYXRoLm1pbihncmlkLmNhbnZhcy53aWR0aCAtIHgsIHcpIDogZy5jYW52YXMud2lkdGggLSB4O1xuICAgICAgICAgICAgZy5zYXZlKCk7XG4gICAgICAgICAgICBnLmJlZ2luUGF0aCgpO1xuICAgICAgICAgICAgZy5yZWN0KHgsIHksIHcsIGgpO1xuICAgICAgICAgICAgZy5jbGlwKCk7XG4gICAgICAgICAgICBnLmZvbnQgPSAnMTJweCBtb25vc3BhY2UnO1xuICAgICAgICAgICAgZy50ZXh0QmFzZWxpbmUgPSAndG9wJztcbiAgICAgICAgICAgIGxldCB4MSA9IHg7XG4gICAgICAgICAgICBsZXQgbWF4TGVuZ3RoV29yZHMgPSB7fTtcbiAgICAgICAgICAgIGxldCBtYXhMZW5ndGhXb3JkU3VtID0ge307XG4gICAgICAgICAgICBsZXQgYWxsUGFydHMgPSBnZXRQYXJ0cyhzdWJQYXJ0cywgcyk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbFBhcnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoV29yZHNbaV0gPSBhbGxQYXJ0c1tpXS5sZW5ndGggKiA3O1xuICAgICAgICAgICAgICAgIGxldCBjb2xvciA9IG1vbm9tZXJzLmhhcyhhbGxQYXJ0c1tpXSkgPyAncmVkJyA6IGdyYXlDb2xvcjtcbiAgICAgICAgICAgICAgICBnLmZpbGxTdHlsZSA9IHVuZGVmaW5lZENvbG9yO1xuICAgICAgICAgICAgICAgIHgxID0gcHJpbnRMZWZ0T3JDZW50ZXJlZCh4MSwgeSwgdywgaCwgZywgYWxsUGFydHNbaV0sIGNvbG9yLCAwLCB0cnVlLCAxLjApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWF4TGVuZ3RoV29yZFN1bVswXSA9IG1heExlbmd0aFdvcmRzWzBdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBhbGxQYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIG1heExlbmd0aFdvcmRTdW1baV0gPSBtYXhMZW5ndGhXb3JkU3VtW2kgLSAxXSArIG1heExlbmd0aFdvcmRzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JpZENlbGwuY2VsbC5jb2x1bW4udGVtcCA9IHtcbiAgICAgICAgICAgICAgICAnaGVsbS1zdW0tbWF4TGVuZ3RoV29yZHMnOiBtYXhMZW5ndGhXb3JkU3VtLFxuICAgICAgICAgICAgICAgICdoZWxtLW1heExlbmd0aFdvcmRzJzogbWF4TGVuZ3RoV29yZHNcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBnLnJlc3RvcmUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImV4cG9ydCBjb25zdCBqc29uU2RmTW9ub21lckxpYkRpY3QgPSB7XG4gICAgXCJtb25vbWVyVHlwZVwiOiBudWxsLFxuICAgIFwic21pbGVzXCI6IG51bGwsXG4gICAgXCJuYW1lXCI6IFwiTW9ub21lck5hbWVcIixcbiAgICBcImF1dGhvclwiOiBudWxsLFxuICAgIFwibW9sZmlsZVwiOiBcIm1vbGVjdWxlXCIsXG4gICAgXCJuYXR1cmFsQW5hbG9nXCI6IFwiTW9ub21lck5hdHVyYWxBbmFsb2dDb2RlXCIsXG4gICAgXCJyZ3JvdXBzXCI6IFwiTW9ub21lckNhcHNcIixcbiAgICBcImNyZWF0ZURhdGVcIjogbnVsbCxcbiAgICBcImlkXCI6IG51bGwsXG4gICAgXCJwb2x5bWVyVHlwZVwiOiBcIk1vbm9tZXJUeXBlXCIsXG4gICAgXCJzeW1ib2xcIjogXCJNb25vbWVyQ29kZVwiXG59O1xuZXhwb3J0IGNvbnN0IFNNSUxFUyA9ICdzbWlsZXMnO1xuZXhwb3J0IGNvbnN0IFJHUk9VUFMgPSBcInJncm91cHNcIjtcbmV4cG9ydCBjb25zdCBNT05PTUVSX1NZTUJPTCA9IFwic3ltYm9sXCI7XG5leHBvcnQgY29uc3QgUkdST1VQX0NBUF9HUk9VUF9TTUlMRVMgPSBcImNhcEdyb3VwU21pbGVzXCI7XG5leHBvcnQgY29uc3QgUkdST1VQX0FMVEVSX0lEID0gXCJhbHRlcm5hdGVJZFwiO1xuZXhwb3J0IGNvbnN0IFJHUk9VUF9DQVBfR1JPVVBfTkFNRSA9IFwiY2FwR3JvdXBOYW1lXCI7XG5leHBvcnQgY29uc3QgUkdST1VQX0xBQkVMID0gXCJsYWJlbFwiO1xuZXhwb3J0IGNvbnN0IFNERl9NT05PTUVSX05BTUUgPSBcIk1vbm9tZXJOYW1lXCI7XG4iLCJpbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuZXhwb3J0IGNsYXNzIEhlbG1XZWJFZGl0b3Ige1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLncgPSAyMDA7XG4gICAgICAgIHRoaXMuaCA9IDEwMDtcbiAgICAgICAgdGhpcy5ob3N0ID0gdWkuZGl2KFtdLCB7IHN0eWxlOiB7IHdpZHRoOiBgJHt0aGlzLnd9cHhgLCBoZWlnaHQ6IGAke3RoaXMuaH1weGAgfSB9KTtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBuZXcgSlNEcmF3Mi5FZGl0b3IodGhpcy5ob3N0LCB7IHdpZHRoOiB0aGlzLncsIGhlaWdodDogdGhpcy5oLCB2aWV3b25seTogdHJ1ZSB9KTtcbiAgICB9XG4gICAgcmVzaXplRWRpdG9yKHcsIGgpIHtcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0U2l6ZSh3LCBoKTtcbiAgICB9XG4gICAgY3JlYXRlV2ViRWRpdG9yKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvclZpZXcgPSB1aS5kaXYoKTtcbiAgICAgICAgb3JnLmhlbG0ud2ViZWRpdG9yLk1vbFZpZXdlci5tb2xzY2FsZSA9IDAuODtcbiAgICAgICAgY29uc3Qgd2ViRWRpdG9yID0gbmV3IHNjaWwuaGVsbS5BcHAoZWRpdG9yVmlldywge1xuICAgICAgICAgICAgc2hvd2Fib3V0OiBmYWxzZSxcbiAgICAgICAgICAgIG1leGZvbnRzaXplOiAnOTAlJyxcbiAgICAgICAgICAgIG1leHJuYXBpbm9udGFiOiB0cnVlLFxuICAgICAgICAgICAgdG9wbWFyZ2luOiAyMCxcbiAgICAgICAgICAgIG1leG1vbm9tZXJzdGFiOiB0cnVlLFxuICAgICAgICAgICAgc2VxdWVuY2V2aWV3b25seTogZmFsc2UsXG4gICAgICAgICAgICBtZXhmYXZvcml0ZWZpcnN0OiB0cnVlLFxuICAgICAgICAgICAgbWV4ZmlsdGVyOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzaXplcyA9IHdlYkVkaXRvci5jYWxjdWxhdGVTaXplcygpO1xuICAgICAgICB3ZWJFZGl0b3IuY2FudmFzLnJlc2l6ZShzaXplcy5yaWdodHdpZHRoIC0gMTAwLCBzaXplcy50b3BoZWlnaHQgLSAyMTApO1xuICAgICAgICBsZXQgcyA9IHsgd2lkdGg6IHNpemVzLnJpZ2h0d2lkdGggLSAxMDAgKyAncHgnLCBoZWlnaHQ6IHNpemVzLmJvdHRvbWhlaWdodCArICdweCcgfTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIHNjaWwuYXBwbHkod2ViRWRpdG9yLnNlcXVlbmNlLnN0eWxlLCBzKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIHNjaWwuYXBwbHkod2ViRWRpdG9yLm5vdGF0aW9uLnN0eWxlLCBzKTtcbiAgICAgICAgcyA9IHsgd2lkdGg6IHNpemVzLnJpZ2h0d2lkdGggKyAncHgnLCBoZWlnaHQ6IChzaXplcy5ib3R0b21oZWlnaHQgKyB3ZWJFZGl0b3IudG9vbGJhcmhlaWdodCkgKyAncHgnIH07XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBzY2lsLmFwcGx5KHdlYkVkaXRvci5wcm9wZXJ0aWVzLnBhcmVudC5zdHlsZSwgcyk7XG4gICAgICAgIHdlYkVkaXRvci5zdHJ1Y3R1cmV2aWV3LnJlc2l6ZShzaXplcy5yaWdodHdpZHRoLCBzaXplcy5ib3R0b21oZWlnaHQgKyB3ZWJFZGl0b3IudG9vbGJhcmhlaWdodCk7XG4gICAgICAgIHdlYkVkaXRvci5tZXgucmVzaXplKHNpemVzLnRvcGhlaWdodCAtIDgwKTtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3ZWJFZGl0b3IuY2FudmFzLmhlbG0uc2V0U2VxdWVuY2UodmFsdWUsICdIRUxNJyk7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgICAgIHJldHVybiB7IGVkaXRvckRpdjogZWRpdG9yVmlldywgd2ViRWRpdG9yOiB3ZWJFZGl0b3IgfTtcbiAgICB9XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gZ2V0UGFydHMoc3ViUGFydHMsIHMpIHtcbiAgICBsZXQgaiA9IDA7XG4gICAgbGV0IGFsbFBhcnRzID0gW107XG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBzdWJQYXJ0cy5sZW5ndGg7ICsraykge1xuICAgICAgICBsZXQgaW5kZXhPZk1vbm9tZXIgPSBzLmluZGV4T2Yoc3ViUGFydHNba10pO1xuICAgICAgICBsZXQgaGVsbUJlZm9yZU1vbm9tZXIgPSBzLnNsaWNlKGosIGluZGV4T2ZNb25vbWVyKTtcbiAgICAgICAgYWxsUGFydHMucHVzaChoZWxtQmVmb3JlTW9ub21lcik7XG4gICAgICAgIGFsbFBhcnRzLnB1c2goc3ViUGFydHNba10pO1xuICAgICAgICBzID0gcy5zdWJzdHJpbmcoaW5kZXhPZk1vbm9tZXIgKyBzdWJQYXJ0c1trXS5sZW5ndGgpO1xuICAgIH1cbiAgICBhbGxQYXJ0cy5wdXNoKHMpO1xuICAgIHJldHVybiBhbGxQYXJ0cztcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUhlbG0ocykge1xuICAgIHZhciBzZWN0aW9ucyA9IHNwbGl0KHMsICckJyk7XG4gICAgcyA9IHNlY3Rpb25zWzBdO1xuICAgIHZhciBtb25vbWVycyA9IFtdO1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIGlmICghc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHMpKSB7XG4gICAgICAgIHZhciBzZXFzID0gc3BsaXQocywgJ3wnKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXFzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICB2YXIgZSA9IGRldGFjaEFubm90YXRpb24oc2Vxc1tpXSk7XG4gICAgICAgICAgICBzID0gZS5zdHI7XG4gICAgICAgICAgICB2YXIgcCA9IHMuaW5kZXhPZigneycpO1xuICAgICAgICAgICAgcyA9IHMuc3Vic3RyaW5nKHAgKyAxKTtcbiAgICAgICAgICAgIHAgPSBzLmluZGV4T2YoJ30nKTtcbiAgICAgICAgICAgIHMgPSBzLnN1YnN0cmluZygwLCBwKTtcbiAgICAgICAgICAgIHZhciBzcyA9IHNwbGl0KHMsICcuJyk7XG4gICAgICAgICAgICBmb3IgKHZhciBtb25vbWVyIG9mIHNzKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbm9tZXIuaW5jbHVkZXMoJygnKSAmJiBtb25vbWVyLmluY2x1ZGVzKCcpJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRzID0gbW9ub21lci5yZXBsYWNlKC9bKCldL2csICcnKS5zcGxpdCgnJyk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGVsIG9mIGVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb25vbWVycy5wdXNoKGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtb25vbWVyLmluY2x1ZGVzKCdbJykgJiYgbW9ub21lci5pbmNsdWRlcygnXScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gbW9ub21lci5tYXRjaCgvKD88PVxcWykuKj8oPz1cXF0pL2csICcnKTtcbiAgICAgICAgICAgICAgICAgICAgbW9ub21lcnMucHVzaChlbGVtZW50WzBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG1vbm9tZXJzLnB1c2gobW9ub21lcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtb25vbWVycztcbn1cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTW9ub21lcnMoaGVsbVN0cmluZykge1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIGNvbnN0IHR5cGVzID0gT2JqZWN0LmtleXMob3JnLmhlbG0ud2ViZWRpdG9yLm1vbm9tZXJUeXBlTGlzdCgpKTtcbiAgICBjb25zdCBtb25vbWVycyA9IFtdO1xuICAgIGNvbnN0IG1vbm9tZXJfbmFtZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBtb25vbWVycy5wdXNoKG5ldyBzY2lsLmhlbG0uTW9ub21lcnMuZ2V0TW9ub21lclNldCh0eXBlc1tpXSkpO1xuICAgICAgICBPYmplY3Qua2V5cyhtb25vbWVyc1tpXSkuZm9yRWFjaChrID0+IHtcbiAgICAgICAgICAgIG1vbm9tZXJfbmFtZXMucHVzaChtb25vbWVyc1tpXVtrXS5pZCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBzcGxpdF9zdHJpbmcgPSBwYXJzZUhlbG0oaGVsbVN0cmluZyk7XG4gICAgcmV0dXJuIG5ldyBTZXQoc3BsaXRfc3RyaW5nLmZpbHRlcih2YWwgPT4gIW1vbm9tZXJfbmFtZXMuaW5jbHVkZXModmFsKSkpO1xufVxuZnVuY3Rpb24gc3BsaXQocywgc2VwKSB7XG4gICAgdmFyIHJldCA9IFtdO1xuICAgIHZhciBmcmFnID0gJyc7XG4gICAgdmFyIHBhcmVudGhlc2VzID0gMDtcbiAgICB2YXIgYnJhY2tldCA9IDA7XG4gICAgdmFyIGJyYWNlcyA9IDA7XG4gICAgdmFyIHF1b3RlID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGMgPSBzLnN1YnN0cmluZyhpLCBpICsgMSk7XG4gICAgICAgIGlmIChjID09IHNlcCAmJiBicmFja2V0ID09IDAgJiYgcGFyZW50aGVzZXMgPT0gMCAmJiBicmFjZXMgPT0gMCAmJiBxdW90ZSA9PSAwKSB7XG4gICAgICAgICAgICByZXQucHVzaChmcmFnKTtcbiAgICAgICAgICAgIGZyYWcgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZyYWcgKz0gYztcbiAgICAgICAgICAgIGlmIChxdW90ZSA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXFxcXCcgJiYgaSArIDEgPCBzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICArK2k7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjMiA9IHMuc3Vic3RyaW5nKGksIGkgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgZnJhZyArPSBjMjtcbiAgICAgICAgICAgICAgICAgICAgYyArPSBjMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYyA9PSAnXFxcIicpIHtcbiAgICAgICAgICAgICAgICBpZiAoIShpID4gMCAmJiBzLnN1YnN0cmluZyhpIC0gMSwgaSkgPT0gJ1xcXFwnKSlcbiAgICAgICAgICAgICAgICAgICAgcXVvdGUgPSBxdW90ZSA9PSAwID8gMSA6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjID09ICdbJylcbiAgICAgICAgICAgICAgICArK2JyYWNrZXQ7XG4gICAgICAgICAgICBlbHNlIGlmIChjID09ICddJylcbiAgICAgICAgICAgICAgICAtLWJyYWNrZXQ7XG4gICAgICAgICAgICBlbHNlIGlmIChjID09ICcoJylcbiAgICAgICAgICAgICAgICArK3BhcmVudGhlc2VzO1xuICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnKScpXG4gICAgICAgICAgICAgICAgLS1wYXJlbnRoZXNlcztcbiAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ3snKVxuICAgICAgICAgICAgICAgICsrYnJhY2VzO1xuICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnfScpXG4gICAgICAgICAgICAgICAgLS1icmFjZXM7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0LnB1c2goZnJhZyk7XG4gICAgcmV0dXJuIHJldDtcbn1cbmZ1bmN0aW9uIGRldGFjaEFubm90YXRpb24ocykge1xuICAgIHZhciByZXQgPSBfZGV0YWNoQXBwZW5kaXgocywgJ1xcXCInKTtcbiAgICBpZiAocmV0LnRhZyAhPSBudWxsKVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIHZhciByID0gX2RldGFjaEFwcGVuZGl4KHMsICdcXCcnKTtcbiAgICByZXR1cm4geyB0YWc6IHJldC50YWcsIHJlcGVhdDogci50YWcsIHN0cjogci5zdHIgfTtcbn1cbmZ1bmN0aW9uIF9kZXRhY2hBcHBlbmRpeChzLCBjKSB7XG4gICAgdmFyIHRhZyA9IG51bGw7XG4gICAgLy9AdHMtaWdub3JlXG4gICAgaWYgKHNjaWwuVXRpbHMuZW5kc3dpdGgocywgYykpIHtcbiAgICAgICAgdmFyIHAgPSBzLmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlIChwID4gMCkge1xuICAgICAgICAgICAgcCA9IHMubGFzdEluZGV4T2YoYywgcCAtIDEpO1xuICAgICAgICAgICAgaWYgKHAgPD0gMCB8fCBzLnN1YnN0cmluZyhwIC0gMSwgcCkgIT0gJ1xcXFwnKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwID4gMCAmJiBwIDwgcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0YWcgPSBzLnN1YnN0cmluZyhwICsgMSwgcy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIHMgPSBzLnN1YnN0cmluZygwLCBwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodGFnICE9IG51bGwpXG4gICAgICAgIHRhZyA9IHRhZy5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcXFwnICsgYywgJ2cnKSwgYyk7XG4gICAgcmV0dXJuIHsgdGFnOiB1bmVzY2FwZSh0YWcpLCBzdHI6IHMgfTtcbn1cbmZ1bmN0aW9uIHVuZXNjYXBlKHMpIHtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBpZiAoc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHMpKVxuICAgICAgICByZXR1cm4gcztcbiAgICByZXR1cm4gcy5yZXBsYWNlKC9bXFxcXF0uL2csIGZ1bmN0aW9uIChtKSB7XG4gICAgICAgIHN3aXRjaCAobSkge1xuICAgICAgICAgICAgY2FzZSAnXFxcXHInOlxuICAgICAgICAgICAgICAgIHJldHVybiAnXFxyJztcbiAgICAgICAgICAgIGNhc2UgJ1xcXFxuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1xcbic7XG4gICAgICAgICAgICBjYXNlICdcXFxcdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdcXHQnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbS5zdWJzdHJpbmcoMSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gREc7IiwibW9kdWxlLmV4cG9ydHMgPSBncm9rOyIsIm1vZHVsZS5leHBvcnRzID0gdWk7IiwibW9kdWxlLmV4cG9ydHMgPSB3dTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG4vKiBEbyBub3QgY2hhbmdlIHRoZXNlIGltcG9ydCBsaW5lcyB0byBtYXRjaCBleHRlcm5hbCBtb2R1bGVzIGluIHdlYnBhY2sgY29uZmlndXJhdGlvbiAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IFJHUk9VUF9DQVBfR1JPVVBfTkFNRSwgUkdST1VQX0xBQkVMLCBTTUlMRVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBIZWxtV2ViRWRpdG9yIH0gZnJvbSAnLi9oZWxtLXdlYi1lZGl0b3InO1xuaW1wb3J0IHsgSGVsbUNlbGxSZW5kZXJlciB9IGZyb20gJy4vY2VsbC1yZW5kZXJlcic7XG5pbXBvcnQgeyBOb3RhdGlvbkNvbnZlcnRlciB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91dGlscy9ub3RhdGlvbi1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgZmluZE1vbm9tZXJzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBlcnJvclRvQ29uc29sZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3RvLWNvbnNvbGUnO1xuZXhwb3J0IGNvbnN0IF9wYWNrYWdlID0gbmV3IERHLlBhY2thZ2UoKTtcbmxldCBtb25vbWVyTGliID0gbnVsbDtcbi8vdGFnczogaW5pdFxuZXhwb3J0IGZ1bmN0aW9uIGluaXRIZWxtKCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBkb2pvLnJlYWR5KGZ1bmN0aW9uICgpIHsgcmVzb2x2ZShudWxsKTsgfSk7XG4gICAgICAgICAgICB9KSwgeWllbGQgZ3Jvay5mdW5jdGlvbnMuY2FsbCgnQmlvOmdldEJpb0xpYicpXSkudGhlbigoW18sIGxpYl0pID0+IHtcbiAgICAgICAgICAgIG1vbm9tZXJMaWIgPSBsaWI7XG4gICAgICAgICAgICByZXdyaXRlTGlicmFyaWVzKCk7IC8vIGluaXRIZWxtKClcbiAgICAgICAgICAgIG1vbm9tZXJMaWIub25DaGFuZ2VkLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJld3JpdGVMaWJyYXJpZXMoKTsgLy8gaW5pdEhlbG0oKVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb25UeXBlTGlzdCA9IG1vbm9tZXJMaWIuZ2V0VHlwZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnU3RyID0gJ01vbm9tZXIgbGliIHVwZGF0ZWQ6PGJyIC8+JyArIChtb25UeXBlTGlzdC5sZW5ndGggPT0gMCA/ICdlbXB0eScgOiBtb25UeXBlTGlzdC5tYXAoKG1vblR5cGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHttb25UeXBlfSAke21vbm9tZXJMaWIuZ2V0TW9ub21lck5hbWVzQnlUeXBlKG1vblR5cGUpLmxlbmd0aH1gO1xuICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCc8YnIgLz4nKSk7XG4gICAgICAgICAgICAgICAgICAgIGdyb2suc2hlbGwuaW5mbyhtc2dTdHIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVyck1zZyA9IGVycm9yVG9Db25zb2xlKGVycik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0hlbG06IGluaXRIZWxtIG1vbm9tZXJMaWIub25DaGFuZ2VkKCkgZXJyb3I6XFxuJyArIGVyck1zZyk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRocm93IGVycjsgLy8gUHJldmVudCBkaXNhYmxpbmcgZXZlbnQgaGFuZGxlclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHJld3JpdGVMaWJyYXJpZXMoKSB7XG4gICAgb3JnLmhlbG0ud2ViZWRpdG9yLk1vbm9tZXJzLmNsZWFyKCk7XG4gICAgbW9ub21lckxpYi5nZXRUeXBlcygpLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICAgICAgY29uc3QgbW1zID0gbW9ub21lckxpYi5nZXRNb25vbWVyTmFtZXNCeVR5cGUodHlwZSk7XG4gICAgICAgIG1tcy5mb3JFYWNoKChzeW1ib2wpID0+IHtcbiAgICAgICAgICAgIGxldCBpc0Jyb2tlbiA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgbW9ub21lciA9IG1vbm9tZXJMaWIuZ2V0TW9ub21lcih0eXBlLCBzeW1ib2wpO1xuICAgICAgICAgICAgY29uc3Qgd2ViRWRpdG9yTW9ub21lciA9IHtcbiAgICAgICAgICAgICAgICBpZDogc3ltYm9sLFxuICAgICAgICAgICAgICAgIG06IG1vbm9tZXIubW9sZmlsZSxcbiAgICAgICAgICAgICAgICBuOiBtb25vbWVyLm5hbWUsXG4gICAgICAgICAgICAgICAgbmE6IG1vbm9tZXIubmF0dXJhbEFuYWxvZyxcbiAgICAgICAgICAgICAgICByczogbW9ub21lci5yZ3JvdXBzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICB0eXBlOiBtb25vbWVyLnBvbHltZXJUeXBlLFxuICAgICAgICAgICAgICAgIG10OiBtb25vbWVyLm1vbm9tZXJUeXBlLFxuICAgICAgICAgICAgICAgIGF0OiB7fVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLnJncm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHdlYkVkaXRvck1vbm9tZXIucnMgPSBtb25vbWVyLnJncm91cHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0ID0ge307XG4gICAgICAgICAgICAgICAgbW9ub21lci5yZ3JvdXBzLmZvckVhY2goaXQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhdFtpdFtSR1JPVVBfTEFCRUxdXSA9IGl0W1JHUk9VUF9DQVBfR1JPVVBfTkFNRV07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgd2ViRWRpdG9yTW9ub21lci5hdCA9IGF0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobW9ub21lci5kYXRhW1NNSUxFU10gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHdlYkVkaXRvck1vbm9tZXIucnMgPSBPYmplY3Qua2V5cyhnZXRSUyhtb25vbWVyLmRhdGFbU01JTEVTXS50b1N0cmluZygpKSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHdlYkVkaXRvck1vbm9tZXIuYXQgPSBnZXRSUyhtb25vbWVyLmRhdGFbU01JTEVTXS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlzQnJva2VuID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNCcm9rZW4pXG4gICAgICAgICAgICAgICAgb3JnLmhlbG0ud2ViZWRpdG9yLk1vbm9tZXJzLmFkZE9uZU1vbm9tZXIod2ViRWRpdG9yTW9ub21lcik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIE9ic29sZXRlXG4gICAgbGV0IGdyaWQgPSBncm9rLnNoZWxsLnR2LmdyaWQ7XG4gICAgaWYgKGdyaWQpXG4gICAgICAgIGdyaWQuaW52YWxpZGF0ZSgpO1xufVxuLy9uYW1lOiBoZWxtQ2VsbFJlbmRlcmVyXG4vL3RhZ3M6IGNlbGxSZW5kZXJlclxuLy9tZXRhLmNlbGxUeXBlOiBoZWxtXG4vL21ldGEuY29sdW1uVGFnczogdW5pdHM9aGVsbVxuLy9vdXRwdXQ6IGdyaWRfY2VsbF9yZW5kZXJlciByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiBoZWxtQ2VsbFJlbmRlcmVyKCkge1xuICAgIHJldHVybiBuZXcgSGVsbUNlbGxSZW5kZXJlcigpO1xufVxuLy90YWdzOiBjZWxsRWRpdG9yXG4vL2Rlc2NyaXB0aW9uOiBNYWNyb21vbGVjdWxlXG4vL2lucHV0OiBncmlkX2NlbGwgY2VsbFxuZXhwb3J0IGZ1bmN0aW9uIGVkaXRNb2xlY3VsZUNlbGwoY2VsbCkge1xuICAgIGNvbnN0IG1vbm9tZXJzID0gZmluZE1vbm9tZXJzKGNlbGwuY2VsbC52YWx1ZSk7XG4gICAgaWYgKGNlbGwuZ3JpZENvbHVtbi5jb2x1bW4udGFnc1tERy5UQUdTLlVOSVRTXSA9PT0gJ2hlbG0nICYmIG1vbm9tZXJzLnNpemUgPT09IDApXG4gICAgICAgIHdlYkVkaXRvcihjZWxsKTtcbiAgICBlbHNlXG4gICAgICAgIGdyb2suc2hlbGwud2FybmluZyhgTW9ub21lcnMgJHtBcnJheS5mcm9tKG1vbm9tZXJzKS5qb2luKCcsICcpfSBhcmUgYWJzZW50IWApO1xufVxuLy9uYW1lOiBPcGVuIEhlbG0gV2ViIEVkaXRvclxuLy9kZXNjcmlwdGlvbjogQWRkcyBlZGl0b3Jcbi8vbWV0YS5hY3Rpb246IE9wZW4gSGVsbSBXZWIgRWRpdG9yXG4vL2lucHV0OiBzdHJpbmcgbW9sIHsgc2VtVHlwZTogTWFjcm9tb2xlY3VsZSB9XG5leHBvcnQgZnVuY3Rpb24gb3BlbkVkaXRvcihtb2wpIHtcbiAgICBsZXQgZGYgPSBncm9rLnNoZWxsLnR2LmdyaWQuZGF0YUZyYW1lO1xuICAgIGxldCBjb252ZXJ0ZXIgPSBuZXcgTm90YXRpb25Db252ZXJ0ZXIoZGYuY29sdW1ucy5ieVNlbVR5cGUoJ01hY3JvbW9sZWN1bGUnKSk7XG4gICAgY29uc3QgcmVzU3RyID0gY29udmVydGVyLmNvbnZlcnRTdHJpbmdUb0hlbG0obW9sLCAnLycpO1xuICAgIHdlYkVkaXRvcih1bmRlZmluZWQsIHJlc1N0cik7XG59XG4vL25hbWU6IFByb3BlcnRpZXNcbi8vdGFnczogcGFuZWwsIHdpZGdldHNcbi8vaW5wdXQ6IHN0cmluZyBoZWxtU3RyaW5nIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuLy9vdXRwdXQ6IHdpZGdldCByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzUGFuZWwoaGVsbVN0cmluZykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGxldCBncmlkID0gZ3Jvay5zaGVsbC50di5ncmlkO1xuICAgICAgICBsZXQgcGFyZW50ID0gZ3JpZC5yb290LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGhvc3QgPSB1aS5kaXYoW10pO1xuICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoaG9zdCk7XG4gICAgICAgIGxldCBlZGl0b3IgPSBuZXcgSlNEcmF3Mi5FZGl0b3IoaG9zdCwgeyB2aWV3b25seTogdHJ1ZSB9KTtcbiAgICAgICAgaG9zdC5zdHlsZS53aWR0aCA9ICcwcHgnO1xuICAgICAgICBob3N0LnN0eWxlLmhlaWdodCA9ICcwcHgnO1xuICAgICAgICBlZGl0b3Iuc2V0SGVsbShoZWxtU3RyaW5nKTtcbiAgICAgICAgbGV0IGZvcm11bGEgPSBlZGl0b3IuZ2V0Rm9ybXVsYSh0cnVlKTtcbiAgICAgICAgbGV0IG1vbFdlaWdodCA9IE1hdGgucm91bmQoZWRpdG9yLmdldE1vbFdlaWdodCgpICogMTAwKSAvIDEwMDtcbiAgICAgICAgbGV0IGNvZWYgPSBNYXRoLnJvdW5kKGVkaXRvci5nZXRFeHRpbmN0aW9uQ29lZmZpY2llbnQodHJ1ZSkgKiAxMDApIC8gMTAwO1xuICAgICAgICBwYXJlbnQubGFzdENoaWxkLnJlbW92ZSgpO1xuICAgICAgICByZXR1cm4gbmV3IERHLldpZGdldCh1aS50YWJsZUZyb21NYXAoe1xuICAgICAgICAgICAgJ2Zvcm11bGEnOiBmb3JtdWxhLnJlcGxhY2UoLzxzdWI+L2csICcnKS5yZXBsYWNlKC88XFwvc3ViPi9nLCAnJyksXG4gICAgICAgICAgICAnbW9sZWN1bGFyIHdlaWdodCc6IG1vbFdlaWdodCxcbiAgICAgICAgICAgICdleHRpbmN0aW9uIGNvZWZmaWNpZW50JzogY29lZixcbiAgICAgICAgfSkpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gd2ViRWRpdG9yKGNlbGwsIHZhbHVlKSB7XG4gICAgbGV0IHZpZXcgPSB1aS5kaXYoKTtcbiAgICBvcmcuaGVsbS53ZWJlZGl0b3IuTW9sVmlld2VyLm1vbHNjYWxlID0gMC44O1xuICAgIGxldCBhcHAgPSBuZXcgc2NpbC5oZWxtLkFwcCh2aWV3LCB7XG4gICAgICAgIHNob3dhYm91dDogZmFsc2UsXG4gICAgICAgIG1leGZvbnRzaXplOiAnOTAlJyxcbiAgICAgICAgbWV4cm5hcGlub250YWI6IHRydWUsXG4gICAgICAgIHRvcG1hcmdpbjogMjAsXG4gICAgICAgIG1leG1vbm9tZXJzdGFiOiB0cnVlLFxuICAgICAgICBzZXF1ZW5jZXZpZXdvbmx5OiBmYWxzZSxcbiAgICAgICAgbWV4ZmF2b3JpdGVmaXJzdDogdHJ1ZSxcbiAgICAgICAgbWV4ZmlsdGVyOiB0cnVlXG4gICAgfSk7XG4gICAgdmFyIHNpemVzID0gYXBwLmNhbGN1bGF0ZVNpemVzKCk7XG4gICAgYXBwLmNhbnZhcy5yZXNpemUoc2l6ZXMucmlnaHR3aWR0aCAtIDEwMCwgc2l6ZXMudG9waGVpZ2h0IC0gMjEwKTtcbiAgICB2YXIgcyA9IHsgd2lkdGg6IHNpemVzLnJpZ2h0d2lkdGggLSAxMDAgKyAncHgnLCBoZWlnaHQ6IHNpemVzLmJvdHRvbWhlaWdodCArICdweCcgfTtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBzY2lsLmFwcGx5KGFwcC5zZXF1ZW5jZS5zdHlsZSwgcyk7XG4gICAgLy9AdHMtaWdub3JlXG4gICAgc2NpbC5hcHBseShhcHAubm90YXRpb24uc3R5bGUsIHMpO1xuICAgIHMgPSB7IHdpZHRoOiBzaXplcy5yaWdodHdpZHRoICsgJ3B4JywgaGVpZ2h0OiAoc2l6ZXMuYm90dG9taGVpZ2h0ICsgYXBwLnRvb2xiYXJoZWlnaHQpICsgJ3B4JyB9O1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIHNjaWwuYXBwbHkoYXBwLnByb3BlcnRpZXMucGFyZW50LnN0eWxlLCBzKTtcbiAgICBhcHAuc3RydWN0dXJldmlldy5yZXNpemUoc2l6ZXMucmlnaHR3aWR0aCwgc2l6ZXMuYm90dG9taGVpZ2h0ICsgYXBwLnRvb2xiYXJoZWlnaHQpO1xuICAgIGFwcC5tZXgucmVzaXplKHNpemVzLnRvcGhlaWdodCAtIDgwKTtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjZWxsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgYXBwLmNhbnZhcy5oZWxtLnNldFNlcXVlbmNlKGNlbGwuY2VsbC52YWx1ZSwgJ0hFTE0nKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFwcC5jYW52YXMuaGVsbS5zZXRTZXF1ZW5jZSh2YWx1ZSwgJ0hFTE0nKTtcbiAgICAgICAgfVxuICAgIH0sIDIwMCk7XG4gICAgLy9AdHMtaWdub3JlXG4gICAgdWkuZGlhbG9nKHsgc2hvd0hlYWRlcjogZmFsc2UsIHNob3dGb290ZXI6IHRydWUgfSlcbiAgICAgICAgLmFkZCh2aWV3KVxuICAgICAgICAub25PSygoKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY2VsbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNlbGwuY2VsbC52YWx1ZSA9IGFwcC5jYW52YXMuZ2V0SGVsbSh0cnVlKS5yZXBsYWNlKC88XFwvc3Bhbj4vZywgJycpLnJlcGxhY2UoLzxzcGFuIHN0eWxlPSdiYWNrZ3JvdW5kOiNiYmY7Jz4vZywgJycpO1xuICAgICAgICB9XG4gICAgfSkuc2hvdyh7IG1vZGFsOiB0cnVlLCBmdWxsU2NyZWVuOiB0cnVlIH0pO1xufVxuZnVuY3Rpb24gYWNjZXNzU2VydmVyKHVybCwga2V5KSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IHlpZWxkIGZldGNoKHVybCwgcGFyYW1zKTtcbiAgICAgICAgY29uc3QganNvbiA9IHlpZWxkIHJlc3BvbnNlLmpzb24oKTtcbiAgICAgICAgcmV0dXJuIGpzb25ba2V5XTtcbiAgICB9KTtcbn1cbi8vbmFtZTogaGVsbVRvRmFzdGFcbi8vaW5wdXQ6IHN0cmluZyBoZWxtU3RyaW5nIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuLy9vdXRwdXQ6IHN0cmluZyByZXNcbmV4cG9ydCBmdW5jdGlvbiBoZWxtVG9GYXN0YShoZWxtU3RyaW5nKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MS9XZWJTZXJ2aWNlL3NlcnZpY2UvRmFzdGEvUHJvZHVjZS8ke2hlbG1TdHJpbmd9YDtcbiAgICAgICAgcmV0dXJuIHlpZWxkIGFjY2Vzc1NlcnZlcih1cmwsICdGYXN0YUZpbGUnKTtcbiAgICB9KTtcbn1cbi8vbmFtZTogaGVsbVRvUk5BXG4vL2Rlc2NyaXB0aW9uOiBjb252ZXJ0cyB0byBybmEgYW5hbG9ndWUgc2VxdWVuY2Vcbi8vaW5wdXQ6IHN0cmluZyBoZWxtU3RyaW5nIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuLy9vdXRwdXQ6IHN0cmluZyByZXNcbmV4cG9ydCBmdW5jdGlvbiBoZWxtVG9STkEoaGVsbVN0cmluZykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGBodHRwOi8vbG9jYWxob3N0OjgwODEvV2ViU2VydmljZS9zZXJ2aWNlL0Zhc3RhL0NvbnZlcnQvUk5BLyR7aGVsbVN0cmluZ31gO1xuICAgICAgICByZXR1cm4geWllbGQgYWNjZXNzU2VydmVyKHVybCwgJ1NlcXVlbmNlJyk7XG4gICAgfSk7XG59XG4vL25hbWU6IGhlbG1Ub1BlcHRpZGVcbi8vZGVzY3JpcHRpb246IGNvbnZlcnRzIHRvIHBlcHRpZGUgYW5hbG9ndWUgc2VxdWVuY2Vcbi8vaW5wdXQ6IHN0cmluZyBoZWxtU3RyaW5nIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuLy9vdXRwdXQ6IHN0cmluZyByZXNcbmV4cG9ydCBmdW5jdGlvbiBoZWxtVG9QZXB0aWRlKGhlbG1TdHJpbmcpIHtcbiAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICBjb25zdCB1cmwgPSBgaHR0cDovL2xvY2FsaG9zdDo4MDgxL1dlYlNlcnZpY2Uvc2VydmljZS9GYXN0YS9Db252ZXJ0L1BFUFRJREUvJHtoZWxtU3RyaW5nfWA7XG4gICAgICAgIHJldHVybiB5aWVsZCBhY2Nlc3NTZXJ2ZXIodXJsLCAnU2VxdWVuY2UnKTtcbiAgICB9KTtcbn1cbi8vbmFtZTogaGVsbVRvU21pbGVzXG4vL2Rlc2NyaXB0aW9uOiBjb252ZXJ0cyB0byBzbWlsZXNcbi8vaW5wdXQ6IHN0cmluZyBoZWxtU3RyaW5nIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuLy9vdXRwdXQ6IHN0cmluZyBzbWlsZXMge3NlbVR5cGU6IE1vbGVjdWxlfVxuZXhwb3J0IGZ1bmN0aW9uIGhlbG1Ub1NtaWxlcyhoZWxtU3RyaW5nKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgdXJsID0gYGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MS9XZWJTZXJ2aWNlL3NlcnZpY2UvU01JTEVTLyR7aGVsbVN0cmluZ31gO1xuICAgICAgICByZXR1cm4geWllbGQgYWNjZXNzU2VydmVyKHVybCwgJ1NNSUxFUycpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0UlMoc21pbGVzKSB7XG4gICAgY29uc3QgbmV3UyA9IHNtaWxlcy5tYXRjaCgvKD88PVxcWylbXlxcXVtdKig/PV0pL2dtKTtcbiAgICBjb25zdCByZXMgPSB7fTtcbiAgICBsZXQgZWwgPSAnJztcbiAgICBsZXQgZGlnaXQ7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdTLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChuZXdTW2ldICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICgvXFxkLy50ZXN0KG5ld1NbaV0pKSB7XG4gICAgICAgICAgICAgICAgZGlnaXQgPSBuZXdTW2ldW25ld1NbaV0ubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgbmV3U1tpXSA9IG5ld1NbaV0ucmVwbGFjZSgvWzAtOV0vZywgJycpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbmV3U1tpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3U1tpXVtqXSAhPSAnOicpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbCArPSBuZXdTW2ldW2pdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXNbJ1InICsgZGlnaXRdID0gZWw7XG4gICAgICAgICAgICAgICAgZWwgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuLy9uYW1lOiBnZXRNb2xmaWxlc1xuLy9pbnB1dDogY29sdW1uIGNvbCB7c2VtVHlwZTogTWFjcm9tb2xlY3VsZX1cbi8vb3V0cHV0OiBjb2x1bW4gcmVzIFxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbGZpbGVzKGNvbCkge1xuICAgIGxldCBncmlkID0gZ3Jvay5zaGVsbC50di5ncmlkO1xuICAgIGxldCBwYXJlbnQgPSBncmlkLnJvb3QucGFyZW50RWxlbWVudDtcbiAgICBsZXQgcmVzID0gREcuQ29sdW1uLnN0cmluZygnbW9scycsIGNvbC5sZW5ndGgpO1xuICAgIGNvbnN0IGhvc3QgPSB1aS5kaXYoW10pO1xuICAgIHBhcmVudC5hcHBlbmRDaGlsZChob3N0KTtcbiAgICBsZXQgZWRpdG9yID0gbmV3IEpTRHJhdzIuRWRpdG9yKGhvc3QsIHsgdmlld29ubHk6IHRydWUgfSk7XG4gICAgaG9zdC5zdHlsZS53aWR0aCA9ICcwcHgnO1xuICAgIGhvc3Quc3R5bGUuaGVpZ2h0ID0gJzBweCc7XG4gICAgcmVzLmluaXQoKGkpID0+IHtcbiAgICAgICAgZWRpdG9yLnNldEhlbG0oY29sLmdldChpKSk7XG4gICAgICAgIGxldCBtb2wgPSBlZGl0b3IuZ2V0TW9sZmlsZSgpO1xuICAgICAgICByZXR1cm4gbW9sO1xuICAgIH0pO1xuICAgIHBhcmVudC5sYXN0Q2hpbGQucmVtb3ZlKCk7XG4gICAgcmV0dXJuIHJlcztcbn1cbi8vbmFtZTogaGVsbVdlYkVkaXRvclxuLy9vdXRwdXQ6IG9iamVjdFxuZXhwb3J0IGZ1bmN0aW9uIGhlbG1XZWJFZGl0b3IoKSB7XG4gICAgcmV0dXJuIG5ldyBIZWxtV2ViRWRpdG9yKCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
|
|
2465
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFja2FnZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsWUFBWSxRQUFRO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsWUFBWSxRQUFRO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0EsMkNBQTJDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3BCM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNPO0FBQ1A7QUFDQSwyQ0FBMkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwQ0U7QUFDSztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFFBQVE7QUFDbkIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixZQUFZLGFBQWE7QUFDekI7QUFDQTtBQUNBO0FBQ0EsMkRBQTJELHNEQUFNO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7QUFDTztBQUNQO0FBQ0EsNEJBQTRCLHNEQUFNO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixZQUFZLFFBQVE7QUFDcEI7QUFDTztBQUNQO0FBQ0E7QUFDQSxzQkFBc0Isc0RBQU07QUFDNUIsb0JBQW9CLGNBQWM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFlBQVksUUFBUTtBQUNwQjtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsY0FBYztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixzREFBTTtBQUM1QixvQkFBb0IsY0FBYztBQUNsQztBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0Esb0JBQW9CLGNBQWM7QUFDbEM7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsZUFBZTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFlBQVksUUFBUTtBQUNwQjtBQUNPO0FBQ1A7QUFDQSxvQkFBb0IsZ0JBQWdCO0FBQ3BDLHdCQUF3QixnQkFBZ0I7QUFDeEMsMkJBQTJCLG9EQUFXO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixZQUFZLFFBQVE7QUFDcEI7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLGdCQUFnQjtBQUMzQixZQUFZLFFBQVE7QUFDcEI7QUFDTztBQUNQO0FBQ0E7QUFDQSxvQkFBb0IsWUFBWTtBQUNoQyw0QkFBNEIsWUFBWTtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsZ0JBQWdCO0FBQ2xEO0FBQ1A7QUFDQTtBQUNBLG9CQUFvQixZQUFZO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixZQUFZLFVBQVU7QUFDdEI7QUFDTztBQUNQO0FBQ0Esb0NBQW9DO0FBQ3BDLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLG9DQUFvQztBQUMvQztBQUNBLGFBQWEsVUFBVTtBQUN2QjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGtEQUFTO0FBQzdCO0FBQ0Esb0JBQW9CLFlBQVk7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNPO0FBQ1A7QUFDQTtBQUNBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTtBQUNBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTtBQUNBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4T0s7QUFDekMsaUNBQWlDLHlEQUFjO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseURBQXlELE9BQU87QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixnQkFBZ0Isa0JBQWtCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELHlCQUF5QjtBQUM5RSxxREFBcUQseUJBQXlCO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3T0s7QUFDekMsa0NBQWtDLHlEQUFjO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7Ozs7Ozs7Ozs7Ozs7O0FDM0JwQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNDTDtBQUN0QztBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiwyREFBaUI7QUFDckMsY0FBYyxvREFBVTtBQUN4QixjQUFjLG9EQUFVO0FBQ3hCLGNBQWMsb0RBQVU7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsWUFBWSxHQUFHLFlBQVksR0FBRyxZQUFZO0FBQ2hFO0FBQ0EsV0FBVyx3REFBYztBQUN6QjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsY0FBYztBQUN0QztBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ2dEO0FBQ3pDO0FBQ1A7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLCtDQUErQyx1RUFBNEI7QUFDM0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08saUNBQWlDLHlEQUFjO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuRU07QUFDakQ7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDBEQUFjO0FBQ3RDO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsQ0FBQyw4QkFBOEI7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsMEJBQTBCO0FBQ3JDLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsU0FBUztBQUNwQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsU0FBUztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVE7QUFDcEI7QUFDTyxpTUFBaU07QUFDeE07QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzdGTDtBQUNsQjtBQUNxRDtBQUN3QjtBQUM5QztBQUNFO0FBQ0w7QUFDTTtBQUN0RDtBQUNBLCtEQUErRCxrQkFBa0I7QUFDakYsV0FBVyxXQUFXO0FBQ3RCLFdBQVcsUUFBUTtBQUNuQixXQUFXLGNBQWM7QUFDekIsYUFBYSxhQUFhLHdCQUF3QjtBQUNsRDtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNPO0FBQ1A7QUFDQSxXQUFXLEtBQUs7QUFDaEIsWUFBWSxVQUFVO0FBQ3RCO0FBQ087QUFDUCxXQUFXLHlDQUFFO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLFlBQVk7QUFDWjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsSUFBSSxJQUFJO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixZQUFZO0FBQ1o7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLFFBQVE7QUFDbkI7QUFDQSxZQUFZO0FBQ1o7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLE9BQU87QUFDbkQ7QUFDQTtBQUNBO0FBQ0EsV0FBVyxXQUFXO0FBQ3RCLFlBQVksY0FBYztBQUMxQjtBQUNPO0FBQ1Asd0JBQXdCLGtFQUF3QjtBQUNoRCxxREFBcUQsa0VBQXdCLENBQUM7QUFDOUUsNkJBQTZCLHVEQUFhO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0EsbUJBQW1CLCtFQUE2QjtBQUNoRDtBQUNBLG1CQUFtQiwrRUFBNkI7QUFDaEQ7QUFDQSxtQkFBbUIsbUZBQWlDO0FBQ3BEO0FBQ0EscURBQXFELFNBQVM7QUFDOUQ7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsYUFBYTtBQUN4QixXQUFXLFFBQVE7QUFDbkIsWUFBWSxRQUFRO0FBQ3BCO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsbUZBQU07QUFDNUIsMEJBQTBCLG1GQUFNO0FBQ2hDLFdBQVcsaUdBQWdCLHNCQUFzQiw2RkFBWSxVQUFVLDZGQUFZO0FBQ25GO0FBQ087QUFDUDtBQUNBLGlDQUFpQyxtRkFBaUM7QUFDbEUsbUNBQW1DLCtFQUE2QjtBQUNoRSxtQ0FBbUMsK0VBQTZCO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFdBQVc7QUFDdEIsV0FBVyxTQUFTO0FBQ3BCLFlBQVksWUFBWTtBQUN4QjtBQUNPO0FBQ1A7QUFDQSwwQkFBMEIsa0VBQXdCO0FBQ2xELHVCQUF1Qiw4REFBWTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQSxtQkFBbUIsc0VBQTZCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwwRUFBZ0M7QUFDbkQ7QUFDQTtBQUNBLG1CQUFtQiw4REFBd0I7QUFDM0M7QUFDQTtBQUNPO0FBQ1A7QUFDQSxtREFBbUQsa0VBQXdCO0FBQzNFO0FBQ0EsaUNBQWlDLHVEQUFhO0FBQzlDO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsTkw7QUFDUztBQUNrQjtBQUNqRTtBQUNPLGdDQUFnQyx3REFBWTtBQUNuRDtBQUNBO0FBQ0EsNkJBQTZCLG9FQUFvQjtBQUNqRDtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCLGtDQUFrQztBQUNsQyw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsZUFBZSxRQUFRO0FBQ3ZCLGVBQWUsUUFBUTtBQUN2QixnQkFBZ0Isa0JBQWtCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QiwrQkFBK0I7QUFDM0Q7QUFDQSw0Q0FBNEMseUZBQTZDO0FBQ3pGO0FBQ0E7QUFDQSxTQUFTO0FBQ1QseUJBQXlCLHVEQUFhO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLFVBQVU7QUFDMUI7QUFDQTtBQUNBLDhDQUE4QztBQUM5QyxtQ0FBbUM7QUFDbkMsK0NBQStDO0FBQy9DLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0Esd0NBQXdDO0FBQ3hDLHlFQUF5RTtBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixvRkFBd0M7QUFDL0Q7QUFDQSwwQkFBMEIsWUFBWSxFQUFFLEdBQUcsRUFBRSxhQUFhO0FBQzFELFNBQVM7QUFDVCxrQkFBa0IsT0FBTyxFQUFFLDJCQUEyQixFQUFFLFFBQVE7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsZUFBZSxlQUFlO0FBQzlCO0FBQ0EsZ0JBQWdCLFNBQVM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGVBQWU7QUFDOUIsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULHlCQUF5Qix1REFBYTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxlQUFlO0FBQzlCLGdCQUFnQixZQUFZO0FBQzVCO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixxRkFBeUM7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsZ0NBQWdDO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QseUJBQXlCLHVEQUFhO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsZUFBZSxRQUFRO0FBQ3ZCLGVBQWUsUUFBUTtBQUN2QixlQUFlLGVBQWU7QUFDOUI7QUFDQSxnQkFBZ0IsUUFBUTtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixxRkFBeUM7QUFDekQsZ0JBQWdCLHlGQUE2QztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMkJBQTJCO0FBQ25EO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixvRkFBd0M7QUFDakU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsZUFBZSxRQUFRO0FBQ3ZCLGVBQWUsZUFBZTtBQUM5QjtBQUNBLGdCQUFnQixXQUFXO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLHlCQUF5QixvRUFBb0I7QUFDN0Msc0JBQXNCLHdEQUFRO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxVQUFVO0FBQ3pCLGVBQWUsZUFBZTtBQUM5QixnQkFBZ0IsMEJBQTBCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLGNBQWMsd0JBQXdCLFlBQVk7QUFDM0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDOzs7Ozs7Ozs7Ozs7Ozs7OztBQ2pQTDtBQUM0RDtBQUNsRztBQUNPO0FBQ1A7QUFDQSw0QkFBNEIsa0VBQXdCO0FBQ3BEO0FBQ0Esc0JBQXNCLHdEQUFRLFNBQVMsMkRBQWU7QUFDdEQ7QUFDQSx5QkFBeUIsOERBQWM7QUFDdkMsbUJBQW1CLHVEQUFhO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQixtQkFBbUI7QUFDbkIscUJBQXFCO0FBQ3JCLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1FQUFtRSxpQkFBaUIsaUJBQWlCLGNBQWM7QUFDbkg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxvRUFBb0I7QUFDckQsOEJBQThCLHdEQUFRO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUE0RCxjQUFjO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQixvQkFBb0I7QUFDcEIsZUFBZTtBQUNmLGNBQWM7QUFDZCxjQUFjO0FBQ2Qsa0JBQWtCO0FBQ2xCLGNBQWM7QUFDZDtBQUNBO0FBQ0EsZ0JBQWdCLGNBQWM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLGlCQUFpQiw2QkFBNkIsV0FBVztBQUNoRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxVQUFVO0FBQ3pCLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsNERBQWtCO0FBQzVDLDRCQUE0QixrRUFBd0I7QUFDcEQseUJBQXlCLHVEQUFhO0FBQ3RDLHlCQUF5QiwrREFBcUI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsUUFBUTtBQUN2QixnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxXQUFXO0FBQzFCLGVBQWUsV0FBVztBQUMxQixlQUFlLFdBQVc7QUFDMUIsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDREQUFrQjtBQUM1Qyw0QkFBNEIsa0VBQXdCO0FBQ3BELHlCQUF5Qix1REFBYTtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qyx1REFBYTtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQyxpQkFBaUIsaUJBQWlCLGNBQWM7QUFDL0YsNEJBQTRCLDZCQUE2QjtBQUN6RDtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEMsaUJBQWlCLGlCQUFpQixjQUFjO0FBQzlGLHlCQUF5QixrQkFBa0I7QUFDM0M7QUFDQSw4Q0FBOEMsaUJBQWlCLGlCQUFpQixjQUFjO0FBQzlGLHlCQUF5QixrQkFBa0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0EsK0NBQStDLGlCQUFpQixpQkFBaUIsY0FBYztBQUMvRiw0QkFBNEIsc0RBQXNEO0FBQ2xGO0FBQ0EsK0NBQStDLGlCQUFpQixpQkFBaUIsY0FBYztBQUMvRiw0QkFBNEIsc0RBQXNEO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7Ozs7Ozs7Ozs7Ozs7OztBQzdOcEM7QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxpQkFBaUIsT0FBTyxNQUFNLE9BQU8sTUFBTSxXQUFXLE1BQU0sWUFBWTtBQUN4RTtBQUNBLDJDQUEyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEJMO0FBQ0E7QUFDc0I7QUFDMEI7QUFDWjtBQUNuRSwrQkFBK0IsNkRBQW1CO0FBQ3pELGlCQUFpQjtBQUNqQixxQkFBcUI7QUFDckIseUJBQXlCO0FBQ3pCLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsb0RBQVk7QUFDekM7QUFDQSwyQkFBMkIsaURBQVM7QUFDcEMsMkJBQTJCLGdEQUFRO0FBQ25DO0FBQ0EsNEJBQTRCLHFCQUFxQjtBQUNqRDtBQUNBLHdDQUF3QyxpREFBTztBQUMvQyx3QkFBd0Isb0RBQVUsWUFBWSxhQUFhO0FBQzNELHdCQUF3QixvREFBVTtBQUNsQztBQUNBO0FBQ0E7QUFDQSxrQkFBa0IseURBQWUsQ0FBQyxnREFBTTtBQUN4QyxrQkFBa0IseURBQWU7QUFDakM7QUFDQTtBQUNBLDJCQUEyQix3RkFBYztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLG9EQUFZO0FBQ3JDO0FBQ0EsdUJBQXVCLGlEQUFTO0FBQ2hDO0FBQ0EseUJBQXlCLGdEQUFNLE9BQU8sU0FBUyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTztBQUNwRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNEQUFzRCxpREFBaUQ7QUFDdkc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsZ0RBQVE7QUFDbkMsNEJBQTRCLHFCQUFxQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsb0dBQW1CO0FBQ3hDO0FBQ0E7QUFDQSw0QkFBNEIscUJBQXFCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDNUdPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwQitCO0FBQy9CO0FBQ1A7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGdEQUFNLE9BQU8sU0FBUyxVQUFVLE9BQU8sZ0JBQWdCLE9BQU8sT0FBTztBQUN6RixzREFBc0QsK0NBQStDO0FBQ3JHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsZ0RBQU07QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsaUJBQWlCO0FBQ2pCO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekNPO0FBQ1A7QUFDQTtBQUNBLG9CQUFvQixxQkFBcUI7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsaUJBQWlCO0FBQ3pDO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQSw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixrQkFBa0I7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixjQUFjO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7Ozs7Ozs7Ozs7QUNwSkE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7OztVQ0FBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7O1dDdEJBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxpQ0FBaUMsV0FBVztXQUM1QztXQUNBOzs7OztXQ1BBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EseUNBQXlDLHdDQUF3QztXQUNqRjtXQUNBO1dBQ0E7Ozs7O1dDUEE7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOQSxpQkFBaUIsU0FBSSxJQUFJLFNBQUk7QUFDN0IsNEJBQTRCLCtEQUErRCxpQkFBaUI7QUFDNUc7QUFDQSxvQ0FBb0MsTUFBTSwrQkFBK0IsWUFBWTtBQUNyRixtQ0FBbUMsTUFBTSxtQ0FBbUMsWUFBWTtBQUN4RixnQ0FBZ0M7QUFDaEM7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUMwQztBQUNKO0FBQ0E7QUFDb0M7QUFDeEI7QUFDQztBQUNzQztBQUNsRDtBQUNtQztBQUNuRSxxQkFBcUIsb0RBQVU7QUFDdEM7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EseUNBQXlDLGdCQUFnQjtBQUN6RCxhQUFhLFNBQVMsNkRBQW1CO0FBQ3pDO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQSx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBLGtDQUFrQyxTQUFTLEVBQUUsaURBQWlEO0FBQzlGLHFCQUFxQjtBQUNyQixvQkFBb0IseURBQWU7QUFDbkM7QUFDQTtBQUNBLG1DQUFtQyx3RkFBYztBQUNqRDtBQUNBLGtDQUFrQztBQUNsQztBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLG9EQUFZLFFBQVEsNkRBQXFCO0FBQ25FLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0Esa0NBQWtDLDhDQUFNO0FBQ3hDLHFFQUFxRSw4Q0FBTTtBQUMzRSx5REFBeUQsOENBQU07QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBLGVBQWUsNERBQWtCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLGVBQWUsNERBQWdCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixvREFBWTtBQUNqQztBQUNBO0FBQ0E7QUFDQSxRQUFRLDREQUFrQixhQUFhLGlDQUFpQztBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUNmO0FBQ1AsYUFBYSxzRUFBNEI7QUFDekM7QUFDQSx3QkFBd0IsbUdBQWlCO0FBQ3pDO0FBQ0EscUVBQXFFLHVEQUFhO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNPO0FBQ1A7QUFDQSxtQkFBbUIsNERBQWtCO0FBQ3JDO0FBQ0EscUJBQXFCLGdEQUFNO0FBQzNCO0FBQ0EsZ0RBQWdELGdCQUFnQjtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixtREFBUyxDQUFDLHlEQUFlO0FBQzVDO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQTtBQUNBLGVBQWUsZ0RBQU07QUFDckIsYUFBYSxzRUFBNEI7QUFDekMsd0JBQXdCLG1HQUFpQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxJQUFJLG1EQUFTLEdBQUcscUNBQXFDO0FBQ3JEO0FBQ0E7QUFDQSxnSEFBZ0g7QUFDaEg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLFNBQVMsK0JBQStCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0Msb0JBQW9CO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDTztBQUNQLGVBQWUsNERBQWtCO0FBQ2pDO0FBQ0EsY0FBYywwREFBZ0I7QUFDOUIsaUJBQWlCLGdEQUFNO0FBQ3ZCO0FBQ0EsNENBQTRDLGdCQUFnQjtBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1AsZUFBZSwyREFBYTtBQUM1QiIsInNvdXJjZXMiOlsid2VicGFjazovL2hlbG0vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3JhbmRvbS5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9hbWlub2FjaWRzLmpzIiwid2VicGFjazovL2hlbG0vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL251Y2xlb3RpZGVzLmpzIiwid2VicGFjazovL2hlbG0vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3NlcS1wYWxldHRlcy5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91bmtub3duLmpzIiwid2VicGFjazovL2hlbG0vLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3V0aWxzL2NlbGwtcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vaGVsbS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdXRpbHMvbWFjcm9tb2xlY3VsZS5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91dGlscy9ub3RhdGlvbi1jb252ZXJ0ZXIuanMiLCJ3ZWJwYWNrOi8vaGVsbS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdXRpbHMvdW5pdHMtaGFuZGxlci5qcyIsIndlYnBhY2s6Ly9oZWxtLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3RvLWNvbnNvbGUuanMiLCJ3ZWJwYWNrOi8vaGVsbS8uL3NyYy9jZWxsLXJlbmRlcmVyLnRzIiwid2VicGFjazovL2hlbG0vLi9zcmMvY29uc3RhbnRzLnRzIiwid2VicGFjazovL2hlbG0vLi9zcmMvaGVsbS13ZWItZWRpdG9yLnRzIiwid2VicGFjazovL2hlbG0vLi9zcmMvdXRpbHMudHMiLCJ3ZWJwYWNrOi8vaGVsbS9leHRlcm5hbCB2YXIgXCJER1wiIiwid2VicGFjazovL2hlbG0vZXh0ZXJuYWwgdmFyIFwiZ3Jva1wiIiwid2VicGFjazovL2hlbG0vZXh0ZXJuYWwgdmFyIFwidWlcIiIsIndlYnBhY2s6Ly9oZWxtL2V4dGVybmFsIHZhciBcInd1XCIiLCJ3ZWJwYWNrOi8vaGVsbS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9oZWxtL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2hlbG0vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2hlbG0vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9oZWxtL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vaGVsbS8uL3NyYy9wYWNrYWdlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gZmxvYXQgZnJvbSAwIHRvIHJhbmdlLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSByYW5nZSBNYXggZ2VuZXJhdGluZyB2YWx1ZS5cbiAqIEByZXR1cm4ge251bWJlcn0gQSByYW5kb20gZmxvYXQgZ2VuZXJhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tRmxvYXQocmFuZ2UpIHtcbiAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIHJhbmdlO1xufVxuLyoqXG4gKiBHZW5lcmF0ZXMgc2luZ2xlIHJhbmRvbSBpbnRlZ2VyIGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGludGVnZXIgZ2VuZXJhdGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tSW50KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IocmFuZG9tRmxvYXQocmFuZ2UpKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWNtRnVaRzl0TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljbUZ1Wkc5dExuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCT3pzN096czdSMEZOUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hYUVVGWExFTkJRVU1zUzBGQllUdEpRVU4yUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZETDBJc1EwRkJRenRCUVVWRU96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4VFFVRlRMRU5CUVVNc1MwRkJZVHRKUVVOeVF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZUVNc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSWk4cUtseHVJQ29nUjJWdVpYSmhkR1Z6SUhOcGJtZHNaU0J5WVc1a2IyMGdabXh2WVhRZ1puSnZiU0F3SUhSdklISmhibWRsTGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCeVlXNW5aU0JOWVhnZ1oyVnVaWEpoZEdsdVp5QjJZV3gxWlM1Y2JpQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMGdRU0J5WVc1a2IyMGdabXh2WVhRZ1oyVnVaWEpoZEdWa0xseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21GdVpHOXRSbXh2WVhRb2NtRnVaMlU2SUc1MWJXSmxjaWs2SUc1MWJXSmxjaUI3WEc0Z0lISmxkSFZ5YmlCTllYUm9MbkpoYm1SdmJTZ3BJQ29nY21GdVoyVTdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnYVc1MFpXZGxjaUJtY205dElEQWdkRzhnY21GdVoyVXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJSEpoYm1kbElFMWhlQ0JuWlc1bGNtRjBhVzVuSUhaaGJIVmxMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlNCQklISmhibVJ2YlNCcGJuUmxaMlZ5SUdkbGJtVnlZWFJsWkM1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEpoYm1SdmJVbHVkQ2h5WVc1blpUb2diblZ0WW1WeUtUb2diblZ0WW1WeUlIdGNiaUFnY21WMGRYSnVJRTFoZEdndVpteHZiM0lvY21GdVpHOXRSbXh2WVhRb2NtRnVaMlVwS1R0Y2JuMWNiaUpkZlE9PSIsIi8qKlxuICogRGVub3RlcyBhIHZlY3RvciBvZiBmbG9hdGluZyBwb2l0IHZhbHVlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgVmVjdG9yXG4gKiBAZXh0ZW5kcyB7RmxvYXQzMkFycmF5fVxuICovXG5leHBvcnQgY2xhc3MgVmVjdG9yIGV4dGVuZHMgRmxvYXQzMkFycmF5IHtcbn1cbi8qKlxuICogRGVub3RlcyBhIHR3by1kaW1lbnNpb25hbCBtYXRyaXguXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIE1hdHJpeFxuICogQGV4dGVuZHMge0FycmF5PFZlY3Rvcj59XG4gKi9cbmV4cG9ydCBjbGFzcyBNYXRyaXggZXh0ZW5kcyBBcnJheSB7XG59XG4vKipcbiAqIERlbm90ZXMgY2FydGVzaWFuIGNvb3JkaW5hdGVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBDb29yZGluYXRlc1xuICogQGV4dGVuZHMge01hdHJpeH1cbiAqL1xuZXhwb3J0IGNsYXNzIENvb3JkaW5hdGVzIGV4dGVuZHMgTWF0cml4IHtcbn1cbi8qKlxuICogRGVub3RlcyBhbiBhcnJheSBvZiBhcmJpdHJhcnktdHlwZWQgdmVjdG9ycy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgVmVjdG9yc1xuICogQGV4dGVuZHMge0FycmF5PGFueT59XG4gKi9cbmV4cG9ydCBjbGFzcyBWZWN0b3JzIGV4dGVuZHMgQXJyYXkge1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pTMWtaV05zWVhKaGRHbHZibk11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjBlWEJsTFdSbFkyeGhjbUYwYVc5dWN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVRzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVFVGQlR5eFRRVUZSTEZsQlFWazdRMEZCUnp0QlFVVXpRenM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNUVUZCVHl4VFFVRlJMRXRCUVdFN1EwRkJSenRCUVVVMVF6czdPenM3TzBkQlRVYzdRVUZEU0N4TlFVRk5MRTlCUVU4c1YwRkJXU3hUUVVGUkxFMUJRVTA3UTBGQlJ6dEJRVVV4UXpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVDBGQlVTeFRRVUZSTEV0QlFWVTdRMEZCUnlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1JHVnViM1JsY3lCaElIWmxZM1J2Y2lCdlppQm1iRzloZEdsdVp5QndiMmwwSUhaaGJIVmxjeTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQVkyeGhjM01nVm1WamRHOXlYRzRnS2lCQVpYaDBaVzVrY3lCN1JteHZZWFF6TWtGeWNtRjVmVnh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nVm1WamRHOXlJR1Y0ZEdWdVpITWdSbXh2WVhRek1rRnljbUY1SUh0OVhHNWNiaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmhJSFIzYnkxa2FXMWxibk5wYjI1aGJDQnRZWFJ5YVhndVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRR05zWVhOeklFMWhkSEpwZUZ4dUlDb2dRR1Y0ZEdWdVpITWdlMEZ5Y21GNVBGWmxZM1J2Y2o1OVhHNGdLaTljYm1WNGNHOXlkQ0JqYkdGemN5Qk5ZWFJ5YVhnZ1pYaDBaVzVrY3lCQmNuSmhlVHhXWldOMGIzSStJSHQ5WEc1Y2JpOHFLbHh1SUNvZ1JHVnViM1JsY3lCallYSjBaWE5wWVc0Z1kyOXZjbVJwYm1GMFpYTXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUdOc1lYTnpJRU52YjNKa2FXNWhkR1Z6WEc0Z0tpQkFaWGgwWlc1a2N5QjdUV0YwY21sNGZWeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdRMjl2Y21ScGJtRjBaWE1nWlhoMFpXNWtjeUJOWVhSeWFYZ2dlMzFjYmx4dUx5b3FYRzRnS2lCRVpXNXZkR1Z6SUdGdUlHRnljbUY1SUc5bUlHRnlZbWwwY21GeWVTMTBlWEJsWkNCMlpXTjBiM0p6TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQmpiR0Z6Y3lCV1pXTjBiM0p6WEc0Z0tpQkFaWGgwWlc1a2N5QjdRWEp5WVhrOFlXNTVQbjFjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUZabFkzUnZjbk1nWlhoMFpXNWtjeUJCY25KaGVUeGhibmsrSUh0OVhHNWNiaThxS2x4dUlDb2dSR1Z1YjNSbGN5QmhJR1JwWTNScGIyNWhjbmtnWTI5dWRHRnBibWx1WnlCbWRXNWpkR2x2YmlCdmNIUnBiMjV6TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQjBlWEJsSUU5d2RHbHZibk5jYmlBcUwxeHVaWGh3YjNKMElIUjVjR1VnVDNCMGFXOXVjeUE5SUh0YmJtRnRaVG9nYzNSeWFXNW5YVG9nWVc1NWZUdGNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR04xYzNSdmJTQmthWE4wWVc1alpTQnRaWFJ5YVdNZ1ltVjBkMlZsYmlCMGFHVWdkSGR2SUdkcGRtVnVJSFpsWTNSdmNuTXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhSNWNHVWdSR2x6ZEdGdVkyVk5aWFJ5YVdOY2JpQXFJRUJ3WVhKaGJTQjdZVzU1ZlNCMk1TQlVhR1VnWm1seWMzUWdkbVZqZEc5eUxseHVJQ29nUUhCaGNtRnRJSHRoYm5sOUlIWXlJRlJvWlNCelpXTnZibVFnZG1WamRHOXlMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlNCRWFYTjBZVzVqWlNCaVpYUjNaV1Z1SUhSb1pYTmxJSFIzYnlCMlpXTjBiM0p6TGx4dUlDb3ZYRzVsZUhCdmNuUWdkSGx3WlNCRWFYTjBZVzVqWlUxbGRISnBZeUE5SUNoMk1Ub2dZVzU1TENCMk1qb2dZVzU1S1NBOVBpQW9iblZ0WW1WeUtUdGNibHh1THlvcVhHNGdLaUJFWlc1dmRHVnpJR0VnYzJsdGNHeGxJSE4wY21sdVp5QjBieUJ6ZEhKcGJtY2daR2xqZEdsdmJtRnllUzVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWRIbHdaU0JUZEhKcGJtZEVhV04wYVc5dVlYSjVYRzRnS2k5Y2JtVjRjRzl5ZENCMGVYQmxJRk4wY21sdVowUnBZM1JwYjI1aGNua2dQU0I3VzJ0bGVUb2djM1J5YVc1blhUb2djM1J5YVc1bmZUdGNiaUpkZlE9PSIsImltcG9ydCB7IFZlY3RvciB9IGZyb20gJy4vdHlwZS1kZWNsYXJhdGlvbnMnO1xuaW1wb3J0IHsgcmFuZG9tRmxvYXQsIHJhbmRvbUludCB9IGZyb20gJy4vcmFuZG9tJztcbi8qKlxuICogQXNzZXJ0cyBhIGNvbmRpdGlvbiBieSB0aHJvd2luZyBhbiBFcnJvci5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtjb25kaXRpb249ZmFsc2VdIENvbmRpdGlvbiB0byBhc3NlcnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2U9J0Fzc2VydGlvbiBlcnJvci4nXSBNZXNzYWdlIHRvIG91dHB1dC5cbiAqIEB0aHJvd3Mge0Vycm9yfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbiA9IGZhbHNlLCBtZXNzYWdlID0gJ0Fzc2VydGlvbiBlcnJvci4nKSB7XG4gICAgaWYgKCFjb25kaXRpb24pXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBuZXcgdHdvLWRpbWVuc2lvbmFsIGFycmF5IGFuZCBmaWxscyBpdCB3aXRoIHRoZSB2YWx1ZSBnaXZlbi5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMSBUaGUgZmlyc3QgZGltZW5zaW9uIG9mIHRoZSBjb29yZGluYXRlcyAobnVtYmVyIG9mIHJvd3MpLlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjIgVGhlIHNlY29uZCBkaW1lbnNpb24gb2YgdGhlIGNvb3JkaW5hdGVzIChudW1iZXIgb2YgY29sdW1ucykuXG4gKiBAcGFyYW0ge251bWJlcn0gW2ZpbGw9MF0gQSB2YWx1ZSB0byBmaWxsIHRoZSBjb29yZGluYXRlcyB3aXRoLlxuICogQHJldHVybiB7Q29vcmRpbmF0ZXN9IEEgdHdvLWRpbWVuc2lvbmFsIGZpbGxlZCB3aXRoIHRoZSB2YWx1ZSBnaXZlbi5cbiAqIEB0b2RvIE1pZ2h0IGJlIHNsb3cgc2luY2UgdXNlZCBBcnJheS5tYXAuIFByb2JhYmx5IG5lZWRzIHBlcmZvcm1hbmNlIHJldmlzaW9uLlxuICovXG5mdW5jdGlvbiBpbml0Q29vcmRpbmF0ZXMoZGltZW5zaW9uMSwgZGltZW5zaW9uMiwgZmlsbCA9IDApIHtcbiAgICByZXR1cm4gbmV3IEFycmF5KGRpbWVuc2lvbjEpLmZpbGwoZmlsbCkubWFwKCgpID0+IChuZXcgVmVjdG9yKGRpbWVuc2lvbjIpLmZpbGwoZmlsbCkpKTtcbn1cbi8qKlxuICogVHJhbnNwb3NlIG1hdHJpeC5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge01hdHJpeH0gbWF0cml4IFRoZSBtYXRyaXggdG8gYmUgdHJhbnNwb3NlZC5cbiAqIEByZXR1cm4ge01hdHJpeH0gVHJhbnNwb3NlZCBtYXRyaXguXG4gKiBAdG9kbyBNaWdodCBiZSBzbG93IHNpbmNlIHVzZWQgQXJyYXkubWFwLiBQcm9iYWJseSBuZWVkcyBwZXJmb3JtYW5jZSByZXZpc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zcG9zZU1hdHJpeChtYXRyaXgpIHtcbiAgICByZXR1cm4gbmV3IEFycmF5KG1hdHJpeFswXS5sZW5ndGgpLmZpbGwoMClcbiAgICAgICAgLm1hcCgoXywgaSkgPT4gKG5ldyBWZWN0b3IobWF0cml4Lmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGopID0+IChtYXRyaXhbal1baV0pKSkpO1xufVxuLyoqXG4gKiBBZGRzIHR3byB2ZWN0b3JzIHdpdGggdGhlIHNlY29uZCBvbmUgdG8gYmUgbXVsdGlwbGllZCBieSB0aGUgZ2l2ZW4gcmF0aW8uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3J9IHAgVGhlIGZpcnN0IHZlY3RvciB0byBhZGQuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3RvciB0byBhZGQuXG4gKiBAcGFyYW0ge251bWJlcn0gW211bHRpcGxpZXI9MV0gQSBtdWx0aXBsaWVyIHRvIGJlIHVzZWQgYmVmb3JlIHRoZSBzZWNvbmQgdmVjdG9yIGlzIGFkZGVkLlxuICogQHJldHVybiB7VmVjdG9yfSBOZXcgdmVjdG9yIGNvbnRhaW5lZCB0aGUgcmVzdWx0IG9mIG9wZXJhdGlvbiBwK211bHRpcGxpZXIqcS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZlY3RvckFkZChwLCBxLCBtdWx0aXBsaWVyID0gMSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IHAubGVuZ3RoO1xuICAgIGFzc2VydChuSXRlbXMgPT0gcS5sZW5ndGgsICdWZWN0b3IgbGVuZ3RocyBkbyBub3QgbWF0Y2guJyk7XG4gICAgY29uc3QgdG90YWwgPSBuZXcgVmVjdG9yKG5JdGVtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwLmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbFtpXSA9IHBbaV0gKyBtdWx0aXBsaWVyICogcVtpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG4vKipcbiAqIFN1bXMgdGhlIHZlY3RvcidzIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7VmVjdG9yfSB2IFRoZSB2ZWN0b3IgdG8gYmUgc3VtbWVkLlxuICogQHJldHVybiB7bnVtYmVyfSBUaGUgdmVjdG9yJ3MgaXRlbXMgc3VtLlxuICovXG5mdW5jdGlvbiBpdGVtc1N1bSh2KSB7XG4gICAgbGV0IHRvdGFsID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsICs9IHZbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuLyoqXG4gKiBTdXFhcmVzIHRoZSB2ZWN0b3IncyBpdGVtcy5cbiAqXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gdiBUaGUgdmVjdG9yIHRvIHNxdWFyZS5cbiAqIEByZXR1cm4ge1ZlY3Rvcn0gQSBuZXcgdmVjdG9yIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsJ3MgaXRlbXMgc3F1YXJlZC5cbiAqL1xuZnVuY3Rpb24gdmVjdG9yU3F1YXJlKHYpIHtcbiAgICBjb25zdCBuSXRlbXMgPSB2Lmxlbmd0aDtcbiAgICBjb25zdCB0b3RhbCA9IG5ldyBWZWN0b3Iobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsW2ldID0gdltpXSAqIHZbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHZlY3Rvckxlbmd0aCh2KSB7XG4gICAgbGV0IHNxclN1bSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSsrKVxuICAgICAgICBzcXJTdW0gKz0gdltpXSAqIHZbaV07XG4gICAgcmV0dXJuIE1hdGguc3FydChzcXJTdW0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHZlY3RvckRvdFByb2R1Y3QodjEsIHYyKSB7XG4gICAgaWYgKHYxLmxlbmd0aCAhPSB2Mi5sZW5ndGgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRpbWVuc2lvbmFsaXR5IG9mIHRoZSB2ZWN0b3JzIG11c3QgbWF0Y2gnKTtcbiAgICBsZXQgcHJvZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2MS5sZW5ndGg7IGkrKylcbiAgICAgICAgcHJvZCArPSB2MVtpXSAqIHYyW2ldO1xuICAgIHJldHVybiBwcm9kO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCB2YWx1ZXMuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjEgVGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4LlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjIgVGhlIHNlY29uZCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc2NhbGU9MS5dIE1heCB2YWx1ZSBnaXZlbiBieSByYW5kb20gZ2VuZXJhdG9yLlxuICogQHJldHVybiB7TWF0cml4fSBBIG5ldyBtYXRyaXggZmlsbGVkIHdpdGggcmFuZG9tIGZsb2F0aW5nIHBvaW50ICB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWxsUmFuZG9tTWF0cml4KGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIsIHNjYWxlID0gMS4pIHtcbiAgICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMoZGltZW5zaW9uMSwgZGltZW5zaW9uMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaW1lbnNpb24xOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkaW1lbnNpb24yOyArK2opXG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSByYW5kb21GbG9hdChzY2FsZSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKipcbiAqIENhbGN1bGF0ZXMgRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlY3RvcnMuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3J9IHAgVGhlIGZpcnN0IHZlY3Rvci5cbiAqIEBwYXJhbSB7VmVjdG9yfSBxIFRoZSBzZWNvbmQgdmVjdG9yLlxuICogQHJldHVybiB7bnVtYmVyfSBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gdmVjdG9ycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHAsIHEpIHtcbiAgICBjb25zdCBkaWZmID0gdmVjdG9yQWRkKHAsIHEsIC0xKTtcbiAgICBjb25zdCBzcWRpZmYgPSB2ZWN0b3JTcXVhcmUoZGlmZik7XG4gICAgY29uc3Qgc3FkaWZmU3VtbSA9IGl0ZW1zU3VtKHNxZGlmZik7XG4gICAgcmV0dXJuIE1hdGguc3FydChzcWRpZmZTdW1tKTtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIGRpc3RhbmNlIG1hdHJpeCB1c2luZyBhIGN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3RvcnN9IGRhdGEgSW5wdXQgdmVjdG9ycyB0byBjYWxjdWxhdGUgZGlzdGFuY2VzLlxuICogQHBhcmFtIHtEaXN0YW5jZU1ldHJpY30gZGlzdGFuY2UgQ3VzdG9tIGRpc3RhbmNlIGZ1bmN0aW9uLlxuICogQHJldHVybiB7TWF0cml4fSBDYWxjdWxhdGVkIGN1c3RvbSBkaXN0YW5jZSBtYXRyaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjRGlzdGFuY2VNYXRyaXgoZGF0YSwgZGlzdGFuY2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBkYXRhLmxlbmd0aDtcbiAgICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMobkl0ZW1zLCBuSXRlbXMsIDApO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgbkl0ZW1zOyArK2opIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSAoZGF0YVtpXSA9PSBudWxsKSB8fCAoZGF0YVtqXSA9PSBudWxsKSA/IDAgOiBkaXN0YW5jZShkYXRhW2ldLCBkYXRhW2pdKTtcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtqXVtpXSA9IGQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbn1cbi8qKiBHZW5lcmF0ZXMgYXJyYXkgZnJvbSBhIHJhbmdlIFtiZWdpbjsgZW5kXSBvciBbYmVnaW47IGVuZCkgaWYgZW5kRXhjbHVzaXZlLiAqKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5SYW5nZShiZWdpbiwgZW5kLCBlbmRFeGNsdXNpdmUgPSBmYWxzZSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IGVuZCAtIGJlZ2luICsgKGVuZEV4Y2x1c2l2ZSA/IDAgOiAxKTtcbiAgICBjb25zdCBzZXJpZXMgPSBuZXcgSW50MzJBcnJheShuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpXG4gICAgICAgIHNlcmllc1tpXSA9IGJlZ2luICsgaTtcbiAgICByZXR1cm4gc2VyaWVzO1xufVxuLyoqXG4gKiBSZXR1cm5zIG9yZGVyIG9mIHZhbHVlcyBhcyBpZiB0aGV5IGFyZSBzb3J0ZWQuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHthbnlbXX0gdmFsdWVzIElucHV0IGFycmF5LlxuICogQHBhcmFtIHtib29sZWFufSBbcmV2ZXJzZT1mYWxzZV0gV2hldGhlciB0byByZXR1cm4gcmV2ZXJzZWQgb3JkZXIuXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gVGhlIG9yZGVyIGNvbXB1dGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJnU29ydCh2YWx1ZXMsIHJldmVyc2UgPSBmYWxzZSkge1xuICAgIGNvbnN0IHNvcnRmbiA9IHJldmVyc2UgPyAoYSwgYikgPT4gKGJbMF0gLSBhWzBdKSA6IChhLCBiKSA9PiAoYVswXSAtIGJbMF0pO1xuICAgIGNvbnN0IGRlY29yID0gKHYsIGkpID0+IFt2LCBpXTsgLy8gc2V0IGluZGV4IHRvIHZhbHVlXG4gICAgY29uc3QgdW5kZWNvciA9IChhKSA9PiBhWzFdOyAvLyBsZWF2ZSBvbmx5IGluZGV4XG4gICAgY29uc3QgX2FyZ3NvcnQgPSAoYXJyKSA9PiBhcnIubWFwKGRlY29yKS5zb3J0KHNvcnRmbikubWFwKHVuZGVjb3IpO1xuICAgIHJldHVybiBfYXJnc29ydCh2YWx1ZXMpO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0cyBhY2NvcmRpbmcgdG8gdGhlIGRpc3QgZnVuY3Rpb25cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggdG90YWwgbnVtYmVyIG9mIG9iamVjdHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIG51bWJlciBvZiBkaXZlcnNlIGVsZW1lbnRzIHRvIGZpbmRcbiAqIEBwYXJhbSB7KGkxOiBudW1iZXIsIGkyOiBudW1iZXIpID0+IG51bWJlcn0gZGlzdCBhIGZ1bmN0aW9uIHdoaWNoIGNhbGN1bGF0ZXMgZGlzdGFuY2UgYmV0d2VlblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR3byBvYmplY3RzIHVzaW5nIHRoZWlyIGluZGV4ZXNcbiAqIEByZXR1cm5zIHtudW1iZXJbXX0gVGhlIGluZGV4ZXMgb2YgdGhlIG1vc3QgZGl2ZXJzZSBvYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXZlcnNlU3Vic2V0KGxlbmd0aCwgbiwgZGlzdCkge1xuICAgIGZ1bmN0aW9uIG1heEJ5KHZhbHVlcywgb3JkZXJCeSkge1xuICAgICAgICBsZXQgbWF4VmFsdWUgPSBudWxsO1xuICAgICAgICBsZXQgbWF4T3JkZXJCeSA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPcmRlckJ5ID0gb3JkZXJCeShlbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChtYXhPcmRlckJ5ID09IG51bGwgfHwgZWxlbWVudE9yZGVyQnkgPiBtYXhPcmRlckJ5KSB7XG4gICAgICAgICAgICAgICAgbWF4VmFsdWUgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIG1heE9yZGVyQnkgPSBlbGVtZW50T3JkZXJCeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4VmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHN1YnNldCA9IFtyYW5kb21JbnQobGVuZ3RoIC0gMSldO1xuICAgIGNvbnN0IGNvbXBsZW1lbnQgPSBuZXcgU2V0KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAoIXN1YnNldC5pbmNsdWRlcyhpKSlcbiAgICAgICAgICAgIGNvbXBsZW1lbnQuYWRkKGkpO1xuICAgIH1cbiAgICB3aGlsZSAoc3Vic2V0Lmxlbmd0aCA8IG4pIHtcbiAgICAgICAgY29uc3QgaWR4ID0gbWF4QnkoY29tcGxlbWVudC52YWx1ZXMoKSwgKGkpID0+IE1hdGgubWluLmFwcGx5KE1hdGgsIHN1YnNldC5tYXAoZnVuY3Rpb24gKHZhbCwgaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBkaXN0KGksIHZhbCk7XG4gICAgICAgIH0pKSk7XG4gICAgICAgIGlmIChpZHgpIHtcbiAgICAgICAgICAgIHN1YnNldC5wdXNoKGlkeCk7XG4gICAgICAgICAgICBjb21wbGVtZW50LmRlbGV0ZShpZHgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWJzZXQ7XG59XG4vKipcbiAqIFJldHVybnMgbm9ybWFsaXplZCB2ZWN0b3JcbiAqIEBwYXJhbSB7VmVjdG9yfSBkYXRhIG51bWVyaWNhbCBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGRhdGEpIHtcbiAgICBsZXQgbWVhbiA9IDA7XG4gICAgbGV0IHN0ZCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBtZWFuICs9IGRhdGFbaV07XG4gICAgbWVhbiAvPSBkYXRhLmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIHN0ZCArPSAoZGF0YVtpXSAtIG1lYW4pICogKGRhdGFbaV0gLSBtZWFuKTtcbiAgICBzdGQgPSBNYXRoLnNxcnQoc3RkIC8gZGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgZGF0YVtpXSA9IChkYXRhW2ldIC0gbWVhbikgLyBzdGQ7XG4gICAgcmV0dXJuIGRhdGE7XG59XG4vKipcbiAqIEZpbmRzIHNldCBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGxpc3RzLlxuICogQHBhcmFtIHthbnlbXX0gYSBUaGUgZmlyc3QgbGlzdC5cbiAqIEBwYXJhbSB7YW55W119IGIgVGhlIHNlY29uZCBsaXN0LlxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXREaWZmZXJlbmNlKGEsIGIpIHtcbiAgICBjb25zdCBiU2V0ID0gbmV3IFNldChiKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KGEuZmlsdGVyKCh4KSA9PiAhYlNldC5oYXMoeCkpKS52YWx1ZXMoKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKMlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVk1zVFVGQlRTeEZRVUYxUXl4TlFVRk5MSEZDUVVGeFFpeERRVUZETzBGQlEzcEdMRTlCUVU4c1JVRkJReXhYUVVGWExFVkJRVVVzVTBGQlV5eEZRVUZETEUxQlFVMHNWVUZCVlN4RFFVRkRPMEZCUldoRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1RVRkJUU3hEUVVGRExGbEJRWEZDTEV0QlFVc3NSVUZCUlN4VlFVRnJRaXhyUWtGQmEwSTdTVUZEY2tZc1NVRkJTU3hEUVVGRExGTkJRVk03VVVGRFdpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRemRDTEVOQlFVTTdRVUZGUkRzN096czdPenM3UjBGUlJ6dEJRVU5JTEZOQlFWTXNaVUZCWlN4RFFVRkRMRlZCUVd0Q0xFVkJRVVVzVlVGQmEwSXNSVUZCUlN4UFFVRmxMRU5CUVVNN1NVRkRMMFVzVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSaXhEUVVGRE8wRkJSVVE3T3pzN096czdSMEZQUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hsUVVGbExFTkJRVU1zVFVGQll6dEpRVU0xUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzWkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNSR0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNc1JVRkJSU3hoUVVGeFFpeERRVUZETzBsQlEzQkZMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGZUVJc1RVRkJUU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4RlFVRkZMRGhDUVVFNFFpeERRVUZETEVOQlFVTTdTVUZGTTBRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVlVGQlZTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWMFF5eFBRVUZQTEV0QlFVc3NRMEZCUXp0QlFVTm1MRU5CUVVNN1FVRkZSRHM3T3pzN1IwRkxSenRCUVVOSUxGTkJRVk1zVVVGQlVTeERRVUZETEVOQlFWTTdTVUZEZWtJc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlJXUXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmFFSXNUMEZCVHl4TFFVRkxMRU5CUVVNN1FVRkRaaXhEUVVGRE8wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeFRRVUZUTEZsQlFWa3NRMEZCUXl4RFFVRlRPMGxCUXpkQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRlRUlzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJReTlDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSWHBDTEU5QlFVOHNTMEZCU3l4RFFVRkRPMEZCUTJZc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeFpRVUZaTEVOQlFVTXNRMEZCVXp0SlFVTndReXhKUVVGSkxFMUJRVTBzUjBGQlZ5eERRVUZETEVOQlFVTTdTVUZEZGtJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlZ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFGQlEzWkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM2hDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU16UWl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGVk8wbEJRM0pFTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1NVRkJTU3hGUVVGRkxFTkJRVU1zVFVGQlRUdFJRVU40UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExEaERRVUU0UXl4RFFVRkRMRU5CUVVNN1NVRkRiRVVzU1VGQlNTeEpRVUZKTEVkQlFWY3NRMEZCUXl4RFFVRkRPMGxCUTNKQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFWY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTjRReXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UWl4UFFVRlBMRWxCUVVrc1EwRkJRenRCUVVOa0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhWUVVGclFpeEZRVUZGTEZWQlFXdENMRVZCUVVVc1VVRkJaMElzUlVGQlJUdEpRVU42Uml4TlFVRk5MRTFCUVUwc1IwRkJSeXhsUVVGbExFTkJRVU1zVlVGQlZTeEZRVUZGTEZWQlFWVXNRMEZCUXl4RFFVRkRPMGxCUlhaRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhWUVVGVkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVTdVVUZEYmtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1JVRkJSU3hGUVVGRkxFTkJRVU03V1VGRGFrTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVOeVF6dEpRVU5FTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxEQkNRVUV3UWl4RFFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGVE8wbEJRemRFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRha01zVFVGQlRTeE5RVUZOTEVkQlFVY3NXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRMnhETEUxQlFVMHNWVUZCVlN4SFFVRkhMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU53UXl4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdRVUZETDBJc1EwRkJRenRCUVVWRU96czdPenM3TzBkQlQwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc2EwSkJRV3RDTEVOQlFVTXNTVUZCWVN4RlFVRkZMRkZCUVhkQ08wbEJRM2hGTEUxQlFVMHNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRE0wSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1pVRkJaU3hEUVVGRExFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZiRVFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTXZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnVReXhOUVVGTkxFTkJRVU1zUjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6RkdMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUTJwRE8wdEJRMFk3U1VGRFJDeFBRVUZQTEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhEUVVGRE8wRkJSVVFzYTBaQlFXdEdPMEZCUTJ4R0xFMUJRVTBzVlVGQlZTeFJRVUZSTEVOQlFVTXNTMEZCWVN4RlFVRkZMRWRCUVZjc1JVRkJSU3haUVVGWkxFZEJRVWNzUzBGQlN6dEpRVU4yUlN4TlFVRk5MRTFCUVUwc1IwRkJSeXhIUVVGSExFZEJRVWNzUzBGQlN5eEhRVUZITEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNCRUxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJSWFJETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXpkQ0xFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJSWGhDTEU5QlFVOHNUVUZCVFN4RFFVRkRPMEZCUTJoQ0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxFOUJRVThzUTBGQlF5eE5RVUZoTEVWQlFVVXNUMEZCVHl4SFFVRkhMRXRCUVVzN1NVRkRjRVFzVFVGQlRTeE5RVUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVkVzUlVGQlJTeERRVUZSTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFWRXNSVUZCUlN4RFFVRlJMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzWkhMRTFCUVUwc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlRTeEZRVUZGTEVOQlFWTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4eFFrRkJjVUk3U1VGRGJFVXNUVUZCVFN4UFFVRlBMRWRCUVVjc1EwRkJReXhEUVVGUkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExHMUNRVUZ0UWp0SlFVTjJSQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eERRVUZETEVkQlFWVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUXpGRkxFOUJRVThzVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUXpGQ0xFTkJRVU03UVVGRlJEczdPenM3T3p0SFFVOUhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRTFCUVdNc1JVRkJSU3hEUVVGVExFVkJRVVVzU1VGQmQwTTdTVUZEYkVjc1UwRkJVeXhMUVVGTExFTkJRVU1zVFVGQlowTXNSVUZCUlN4UFFVRTRRanRSUVVNM1JTeEpRVUZKTEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRjRUlzU1VGQlNTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUlhSQ0xFdEJRVXNzVFVGQlRTeFBRVUZQTEVsQlFVa3NUVUZCVFN4RlFVRkZPMWxCUXpWQ0xFMUJRVTBzWTBGQll5eEhRVUZITEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRaUVVONFF5eEpRVUZKTEZWQlFWVXNTVUZCU1N4SlFVRkpMRWxCUVVrc1kwRkJZeXhIUVVGSExGVkJRVlVzUlVGQlJUdG5Ra0ZEY2tRc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF6dG5Ra0ZEYmtJc1ZVRkJWU3hIUVVGSExHTkJRV01zUTBGQlF6dGhRVU0zUWp0VFFVTkdPMUZCUTBRc1QwRkJUeXhSUVVGUkxFTkJRVU03U1VGRGJFSXNRMEZCUXp0SlFVVkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM1pETEUxQlFVMHNWVUZCVlN4SFFVRkhMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRk4wSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRSUVVNdlFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGNrSXNWVUZCVlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU55UWp0SlFVVkVMRTlCUVU4c1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdVVUZEZUVJc1RVRkJUU3hIUVVGSExFZEJRVWNzUzBGQlN5eERRVU5tTEZWQlFWVXNRMEZCUXl4TlFVRk5MRVZCUVRoQ0xFVkJReTlETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eFZRVUZUTEVkQlFVY3NSVUZCUlN4TFFVRkxPMWxCUTNoRUxFOUJRVThzU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOMFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRVQ3hKUVVGSkxFZEJRVWNzUlVGQlJUdFpRVU5RTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGFrSXNWVUZCVlN4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFRRVU40UWp0TFFVTkdPMGxCUTBRc1QwRkJUeXhOUVVGTkxFTkJRVU03UVVGRGFFSXNRMEZCUXp0QlFVVkVPenM3UjBGSFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4VFFVRlRMRU5CUVVNc1NVRkJXVHRKUVVOd1F5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRZaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZGV2l4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRGJFTXNTVUZCU1N4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVZzUWl4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVVZ3UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU03VVVGRGJFTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUlRkRExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZGYmtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlEyeERMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdTVUZGYmtNc1QwRkJUeXhKUVVGSkxFTkJRVU03UVVGRFpDeERRVUZETzBGQlJVUTdPenM3TzBkQlMwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1lVRkJZU3hEUVVGRExFTkJRVkVzUlVGQlJTeERRVUZSTzBsQlF6bERMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNoQ0xFOUJRVThzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEY2tVc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3VFdGMGNtbDRMQ0JXWldOMGIzSXNJRU52YjNKa2FXNWhkR1Z6TENCV1pXTjBiM0p6TENCRWFYTjBZVzVqWlUxbGRISnBZMzBnWm5KdmJTQW5MaTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTNKaGJtUnZiVVpzYjJGMExDQnlZVzVrYjIxSmJuUjlJR1p5YjIwZ0p5NHZjbUZ1Wkc5dEp6dGNibHh1THlvcVhHNGdLaUJCYzNObGNuUnpJR0VnWTI5dVpHbDBhVzl1SUdKNUlIUm9jbTkzYVc1bklHRnVJRVZ5Y205eUxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdZbTl2YkdWaGJuMGdXMk52Ym1ScGRHbHZiajFtWVd4elpWMGdRMjl1WkdsMGFXOXVJSFJ2SUdGemMyVnlkQzVjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCYmJXVnpjMkZuWlQwblFYTnpaWEowYVc5dUlHVnljbTl5TGlkZElFMWxjM05oWjJVZ2RHOGdiM1YwY0hWMExseHVJQ29nUUhSb2NtOTNjeUI3UlhKeWIzSjlYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCaGMzTmxjblFvWTI5dVpHbDBhVzl1T2lCaWIyOXNaV0Z1SUQwZ1ptRnNjMlVzSUcxbGMzTmhaMlU2SUhOMGNtbHVaeUE5SUNkQmMzTmxjblJwYjI0Z1pYSnliM0l1SnlrZ2UxeHVJQ0JwWmlBb0lXTnZibVJwZEdsdmJpbGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvYldWemMyRm5aU2s3WEc1OVhHNWNiaThxS2x4dUlDb2dRM0psWVhSbGN5QnVaWGNnZEhkdkxXUnBiV1Z1YzJsdmJtRnNJR0Z5Y21GNUlHRnVaQ0JtYVd4c2N5QnBkQ0IzYVhSb0lIUm9aU0IyWVd4MVpTQm5hWFpsYmk1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnWkdsdFpXNXphVzl1TVNCVWFHVWdabWx5YzNRZ1pHbHRaVzV6YVc5dUlHOW1JSFJvWlNCamIyOXlaR2x1WVhSbGN5QW9iblZ0WW1WeUlHOW1JSEp2ZDNNcExseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR1JwYldWdWMybHZiaklnVkdobElITmxZMjl1WkNCa2FXMWxibk5wYjI0Z2IyWWdkR2hsSUdOdmIzSmthVzVoZEdWeklDaHVkVzFpWlhJZ2IyWWdZMjlzZFcxdWN5a3VYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnVzJacGJHdzlNRjBnUVNCMllXeDFaU0IwYnlCbWFXeHNJSFJvWlNCamIyOXlaR2x1WVhSbGN5QjNhWFJvTGx4dUlDb2dRSEpsZEhWeWJpQjdRMjl2Y21ScGJtRjBaWE45SUVFZ2RIZHZMV1JwYldWdWMybHZibUZzSUdacGJHeGxaQ0IzYVhSb0lIUm9aU0IyWVd4MVpTQm5hWFpsYmk1Y2JpQXFJRUIwYjJSdklFMXBaMmgwSUdKbElITnNiM2NnYzJsdVkyVWdkWE5sWkNCQmNuSmhlUzV0WVhBdUlGQnliMkpoWW14NUlHNWxaV1J6SUhCbGNtWnZjbTFoYm1ObElISmxkbWx6YVc5dUxseHVJQ292WEc1bWRXNWpkR2x2YmlCcGJtbDBRMjl2Y21ScGJtRjBaWE1vWkdsdFpXNXphVzl1TVRvZ2JuVnRZbVZ5TENCa2FXMWxibk5wYjI0eU9pQnVkVzFpWlhJc0lHWnBiR3c2SUc1MWJXSmxjaUE5SURBcE9pQkRiMjl5WkdsdVlYUmxjeUI3WEc0Z0lISmxkSFZ5YmlCdVpYY2dRWEp5WVhrb1pHbHRaVzV6YVc5dU1Ta3VabWxzYkNobWFXeHNLUzV0WVhBb0tDa2dQVDRnS0c1bGR5QldaV04wYjNJb1pHbHRaVzV6YVc5dU1pa3VabWxzYkNobWFXeHNLU2twTzF4dWZWeHVYRzR2S2lwY2JpQXFJRlJ5WVc1emNHOXpaU0J0WVhSeWFYZ3VYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHROWVhSeWFYaDlJRzFoZEhKcGVDQlVhR1VnYldGMGNtbDRJSFJ2SUdKbElIUnlZVzV6Y0c5elpXUXVYRzRnS2lCQWNtVjBkWEp1SUh0TllYUnlhWGg5SUZSeVlXNXpjRzl6WldRZ2JXRjBjbWw0TGx4dUlDb2dRSFJ2Wkc4Z1RXbG5hSFFnWW1VZ2MyeHZkeUJ6YVc1alpTQjFjMlZrSUVGeWNtRjVMbTFoY0M0Z1VISnZZbUZpYkhrZ2JtVmxaSE1nY0dWeVptOXliV0Z1WTJVZ2NtVjJhWE5wYjI0dVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIwY21GdWMzQnZjMlZOWVhSeWFYZ29iV0YwY21sNE9pQk5ZWFJ5YVhncE9pQk5ZWFJ5YVhnZ2UxeHVJQ0J5WlhSMWNtNGdibVYzSUVGeWNtRjVLRzFoZEhKcGVGc3dYUzVzWlc1bmRHZ3BMbVpwYkd3b01DbGNiaUFnSUNBdWJXRndLQ2hmTENCcEtTQTlQaUFvYm1WM0lGWmxZM1J2Y2lodFlYUnlhWGd1YkdWdVozUm9LUzVtYVd4c0tEQXBMbTFoY0Nnb1h5d2dhaWtnUFQ0Z0tHMWhkSEpwZUZ0cVhWdHBYU2twS1NrN1hHNTlYRzVjYmk4cUtseHVJQ29nUVdSa2N5QjBkMjhnZG1WamRHOXljeUIzYVhSb0lIUm9aU0J6WldOdmJtUWdiMjVsSUhSdklHSmxJRzExYkhScGNHeHBaV1FnWW5rZ2RHaGxJR2RwZG1WdUlISmhkR2x2TGx4dUlDcGNiaUFxSUVCbGVIQnZjblJjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCd0lGUm9aU0JtYVhKemRDQjJaV04wYjNJZ2RHOGdZV1JrTGx4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKOUlIRWdWR2hsSUhObFkyOXVaQ0IyWldOMGIzSWdkRzhnWVdSa0xseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJRnR0ZFd4MGFYQnNhV1Z5UFRGZElFRWdiWFZzZEdsd2JHbGxjaUIwYnlCaVpTQjFjMlZrSUdKbFptOXlaU0IwYUdVZ2MyVmpiMjVrSUhabFkzUnZjaUJwY3lCaFpHUmxaQzVjYmlBcUlFQnlaWFIxY200Z2UxWmxZM1J2Y24wZ1RtVjNJSFpsWTNSdmNpQmpiMjUwWVdsdVpXUWdkR2hsSUhKbGMzVnNkQ0J2WmlCdmNHVnlZWFJwYjI0Z2NDdHRkV3gwYVhCc2FXVnlLbkV1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjJaV04wYjNKQlpHUW9jRG9nVm1WamRHOXlMQ0J4T2lCV1pXTjBiM0lzSUcxMWJIUnBjR3hwWlhJNklHNTFiV0psY2lBOUlERXBPaUJXWldOMGIzSWdlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0J3TG14bGJtZDBhRHRjYmx4dUlDQmhjM05sY25Rb2JrbDBaVzF6SUQwOUlIRXViR1Z1WjNSb0xDQW5WbVZqZEc5eUlHeGxibWQwYUhNZ1pHOGdibTkwSUcxaGRHTm9MaWNwTzF4dVhHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2JtVjNJRlpsWTNSdmNpaHVTWFJsYlhNcE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2NDNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQjBiM1JoYkZ0cFhTQTlJSEJiYVYwZ0t5QnRkV3gwYVhCc2FXVnlJQ29nY1Z0cFhUdGNibHh1SUNCeVpYUjFjbTRnZEc5MFlXdzdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1UzVnRjeUIwYUdVZ2RtVmpkRzl5SjNNZ2FYUmxiWE11WEc0Z0tseHVJQ29nUUhCaGNtRnRJSHRXWldOMGIzSjlJSFlnVkdobElIWmxZM1J2Y2lCMGJ5QmlaU0J6ZFcxdFpXUXVYRzRnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SUZSb1pTQjJaV04wYjNJbmN5QnBkR1Z0Y3lCemRXMHVYRzRnS2k5Y2JtWjFibU4wYVc5dUlHbDBaVzF6VTNWdEtIWTZJRlpsWTNSdmNpazZJRzUxYldKbGNpQjdYRzRnSUd4bGRDQjBiM1JoYkNBOUlEQTdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjJMbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJSFJ2ZEdGc0lDczlJSFpiYVYwN1hHNWNiaUFnY21WMGRYSnVJSFJ2ZEdGc08xeHVmVnh1WEc0dktpcGNiaUFxSUZOMWNXRnlaWE1nZEdobElIWmxZM1J2Y2lkeklHbDBaVzF6TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0IySUZSb1pTQjJaV04wYjNJZ2RHOGdjM0YxWVhKbExseHVJQ29nUUhKbGRIVnliaUI3Vm1WamRHOXlmU0JCSUc1bGR5QjJaV04wYjNJZ1kyOXVkR0ZwYm1sdVp5QjBhR1VnYjNKcFoybHVZV3duY3lCcGRHVnRjeUJ6Y1hWaGNtVmtMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQjJaV04wYjNKVGNYVmhjbVVvZGpvZ1ZtVmpkRzl5S1RvZ1ZtVmpkRzl5SUh0Y2JpQWdZMjl1YzNRZ2JrbDBaVzF6SUQwZ2RpNXNaVzVuZEdnN1hHNGdJR052Ym5OMElIUnZkR0ZzSUQwZ2JtVjNJRlpsWTNSdmNpaHVTWFJsYlhNcE8xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RpNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQjBiM1JoYkZ0cFhTQTlJSFpiYVYwZ0tpQjJXMmxkTzF4dVhHNGdJSEpsZEhWeWJpQjBiM1JoYkR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSFpsWTNSdmNreGxibWQwYUNoMk9pQldaV04wYjNJcE9pQnVkVzFpWlhJZ2UxeHVJQ0JzWlhRZ2MzRnlVM1Z0T2lCdWRXMWlaWElnUFNBd08xeHVJQ0JtYjNJZ0tHeGxkQ0JwT2lCdWRXMWlaWElnUFNBd095QnBJRHdnZGk1c1pXNW5kR2c3SUdrckt5bGNiaUFnSUNCemNYSlRkVzBnS3owZ2RsdHBYU0FxSUhaYmFWMDdYRzRnSUhKbGRIVnliaUJOWVhSb0xuTnhjblFvYzNGeVUzVnRLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIWmxZM1J2Y2tSdmRGQnliMlIxWTNRb2RqRTZJRlpsWTNSdmNpd2dkakk2SUZabFkzUnZjaWs2SUc1MWJXSmxjaUI3WEc0Z0lHbG1JQ2gyTVM1c1pXNW5kR2dnSVQwZ2RqSXViR1Z1WjNSb0tWeHVJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVkdobElHUnBiV1Z1YzJsdmJtRnNhWFI1SUc5bUlIUm9aU0IyWldOMGIzSnpJRzExYzNRZ2JXRjBZMmduS1R0Y2JpQWdiR1YwSUhCeWIyUTZJRzUxYldKbGNpQTlJREE3WEc0Z0lHWnZjaUFvYkdWMElHazZJRzUxYldKbGNpQTlJREE3SUdrZ1BDQjJNUzVzWlc1bmRHZzdJR2tyS3lsY2JpQWdJQ0J3Y205a0lDczlJSFl4VzJsZElDb2dkakpiYVYwN1hHNGdJSEpsZEhWeWJpQndjbTlrTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdZU0J0WVhSeWFYZ2dabWxzYkdWa0lIZHBkR2dnY21GdVpHOXRJR1pzYjJGMGFXNW5JSEJ2YVc1MElIWmhiSFZsY3k1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1pHbHRaVzV6YVc5dU1TQlVhR1VnWm1seWMzUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQnRZWFJ5YVhndVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdaR2x0Wlc1emFXOXVNaUJVYUdVZ2MyVmpiMjVrSUdScGJXVnVjMmx2YmlCdlppQjBhR1VnYldGMGNtbDRMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0elkyRnNaVDB4TGwwZ1RXRjRJSFpoYkhWbElHZHBkbVZ1SUdKNUlISmhibVJ2YlNCblpXNWxjbUYwYjNJdVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRUVnYm1WM0lHMWhkSEpwZUNCbWFXeHNaV1FnZDJsMGFDQnlZVzVrYjIwZ1pteHZZWFJwYm1jZ2NHOXBiblFnSUhaaGJIVmxjeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHWnBiR3hTWVc1a2IyMU5ZWFJ5YVhnb1pHbHRaVzV6YVc5dU1Ub2diblZ0WW1WeUxDQmthVzFsYm5OcGIyNHlPaUJ1ZFcxaVpYSXNJSE5qWVd4bE9pQnVkVzFpWlhJZ1BTQXhMaWs2SUUxaGRISnBlQ0I3WEc0Z0lHTnZibk4wSUcxaGRISnBlQ0E5SUdsdWFYUkRiMjl5WkdsdVlYUmxjeWhrYVcxbGJuTnBiMjR4TENCa2FXMWxibk5wYjI0eUtUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUnBiV1Z1YzJsdmJqRTdJQ3NyYVNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdvZ1BTQXdPeUJxSUR3Z1pHbHRaVzV6YVc5dU1qc2dLeXRxS1Z4dUlDQWdJQ0FnYldGMGNtbDRXMmxkVzJwZElEMGdjbUZ1Wkc5dFJteHZZWFFvYzJOaGJHVXBPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQnRZWFJ5YVhnN1hHNTlYRzVjYmk4cUtseHVJQ29nUTJGc1kzVnNZWFJsY3lCRmRXTnNhV1JsWVc0Z1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGQyOGdkbVZqZEc5eWN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdjQ0JVYUdVZ1ptbHljM1FnZG1WamRHOXlMbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUhFZ1ZHaGxJSE5sWTI5dVpDQjJaV04wYjNJdVhHNGdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSjlJRVYxWTJ4cFpHVmhiaUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlNCbmFYWmxiaUIyWldOMGIzSnpMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1kyRnNZM1ZzWVhSbFJYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2NEb2dWbVZqZEc5eUxDQnhPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCamIyNXpkQ0JrYVdabUlEMGdkbVZqZEc5eVFXUmtLSEFzSUhFc0lDMHhLVHRjYmlBZ1kyOXVjM1FnYzNGa2FXWm1JRDBnZG1WamRHOXlVM0YxWVhKbEtHUnBabVlwTzF4dUlDQmpiMjV6ZENCemNXUnBabVpUZFcxdElEMGdhWFJsYlhOVGRXMG9jM0ZrYVdabUtUdGNiaUFnY21WMGRYSnVJRTFoZEdndWMzRnlkQ2h6Y1dScFptWlRkVzF0S1R0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0VnWkdsemRHRnVZMlVnYldGMGNtbDRJSFZ6YVc1bklHRWdZM1Z6ZEc5dElHUnBjM1JoYm1ObElHWjFibU4wYVc5dUxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWMzMGdaR0YwWVNCSmJuQjFkQ0IyWldOMGIzSnpJSFJ2SUdOaGJHTjFiR0YwWlNCa2FYTjBZVzVqWlhNdVhHNGdLaUJBY0dGeVlXMGdlMFJwYzNSaGJtTmxUV1YwY21samZTQmthWE4wWVc1alpTQkRkWE4wYjIwZ1pHbHpkR0Z1WTJVZ1puVnVZM1JwYjI0dVhHNGdLaUJBY21WMGRYSnVJSHROWVhSeWFYaDlJRU5oYkdOMWJHRjBaV1FnWTNWemRHOXRJR1JwYzNSaGJtTmxJRzFoZEhKcGVDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOaGJHTkVhWE4wWVc1alpVMWhkSEpwZUNoa1lYUmhPaUJXWldOMGIzSnpMQ0JrYVhOMFlXNWpaVG9nUkdsemRHRnVZMlZOWlhSeWFXTXBPaUJOWVhSeWFYZ2dlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0JrWVhSaExteGxibWQwYUR0Y2JpQWdZMjl1YzNRZ2JXRjBjbWw0SUQwZ2FXNXBkRU52YjNKa2FXNWhkR1Z6S0c1SmRHVnRjeXdnYmtsMFpXMXpMQ0F3S1R0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUc1SmRHVnRjenNnS3l0cEtTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FpQTlJR2tnS3lBeE95QnFJRHdnYmtsMFpXMXpPeUFySzJvcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdRNklHNTFiV0psY2lBOUlDaGtZWFJoVzJsZElEMDlJRzUxYkd3cElIeDhJQ2hrWVhSaFcycGRJRDA5SUc1MWJHd3BJRDhnTUNBNklHUnBjM1JoYm1ObEtHUmhkR0ZiYVYwc0lHUmhkR0ZiYWwwcE8xeHVJQ0FnSUNBZ2JXRjBjbWw0VzJsZFcycGRJRDBnYldGMGNtbDRXMnBkVzJsZElEMGdaRHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlHMWhkSEpwZUR0Y2JuMWNibHh1THlvcUlFZGxibVZ5WVhSbGN5QmhjbkpoZVNCbWNtOXRJR0VnY21GdVoyVWdXMkpsWjJsdU95QmxibVJkSUc5eUlGdGlaV2RwYmpzZ1pXNWtLU0JwWmlCbGJtUkZlR05zZFhOcGRtVXVJQ29xTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGJsSmhibWRsS0dKbFoybHVPaUJ1ZFcxaVpYSXNJR1Z1WkRvZ2JuVnRZbVZ5TENCbGJtUkZlR05zZFhOcGRtVWdQU0JtWVd4elpTazZJRWx1ZERNeVFYSnlZWGtnZTF4dUlDQmpiMjV6ZENCdVNYUmxiWE1nUFNCbGJtUWdMU0JpWldkcGJpQXJJQ2hsYm1SRmVHTnNkWE5wZG1VZ1B5QXdJRG9nTVNrN1hHNGdJR052Ym5OMElITmxjbWxsY3lBOUlHNWxkeUJKYm5Rek1rRnljbUY1S0c1SmRHVnRjeWs3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0J1U1hSbGJYTTdJQ3NyYVNsY2JpQWdJQ0J6WlhKcFpYTmJhVjBnUFNCaVpXZHBiaUFySUdrN1hHNWNiaUFnY21WMGRYSnVJSE5sY21sbGN6dGNibjFjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUc5eVpHVnlJRzltSUhaaGJIVmxjeUJoY3lCcFppQjBhR1Y1SUdGeVpTQnpiM0owWldRdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSEJoY21GdElIdGhibmxiWFgwZ2RtRnNkV1Z6SUVsdWNIVjBJR0Z5Y21GNUxseHVJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0JiY21WMlpYSnpaVDFtWVd4elpWMGdWMmhsZEdobGNpQjBieUJ5WlhSMWNtNGdjbVYyWlhKelpXUWdiM0prWlhJdVhHNGdLaUJBY21WMGRYSnVJSHR1ZFcxaVpYSmJYWDBnVkdobElHOXlaR1Z5SUdOdmJYQjFkR1ZrTGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZWEpuVTI5eWRDaDJZV3gxWlhNNklHRnVlVnRkTENCeVpYWmxjbk5sSUQwZ1ptRnNjMlVwT2lCdWRXMWlaWEpiWFNCN1hHNGdJR052Ym5OMElITnZjblJtYmlBOUlISmxkbVZ5YzJVZ1B5QW9ZVG9nWVc1NVcxMHNJR0k2SUdGdWVWdGRLU0E5UGlBb1lsc3dYU0F0SUdGYk1GMHBJRG9nS0dFNklHRnVlVnRkTENCaU9pQmhibmxiWFNrZ1BUNGdLR0ZiTUYwZ0xTQmlXekJkS1R0Y2JpQWdZMjl1YzNRZ1pHVmpiM0lnUFNBb2Rqb2dZVzU1TENCcE9pQnVkVzFpWlhJcElEMCtJRnQyTENCcFhUc2dMeThnYzJWMElHbHVaR1Y0SUhSdklIWmhiSFZsWEc0Z0lHTnZibk4wSUhWdVpHVmpiM0lnUFNBb1lUb2dZVzU1VzEwcElEMCtJR0ZiTVYwN0lDOHZJR3hsWVhabElHOXViSGtnYVc1a1pYaGNiaUFnWTI5dWMzUWdYMkZ5WjNOdmNuUWdQU0FvWVhKeU9pQmhibmxiWFNrZ1BUNGdZWEp5TG0xaGNDaGtaV052Y2lrdWMyOXlkQ2h6YjNKMFptNHBMbTFoY0NoMWJtUmxZMjl5S1R0Y2JpQWdjbVYwZFhKdUlGOWhjbWR6YjNKMEtIWmhiSFZsY3lrN1hHNTlYRzVjYmk4cUtseHVJQ29nVW1WMGRYSnVjeUIwYUdVZ2FXNWtaWGhsY3lCdlppQjBhR1VnYlc5emRDQmthWFpsY25ObElHOWlhbVZqZEhNZ1lXTmpiM0prYVc1bklIUnZJSFJvWlNCa2FYTjBJR1oxYm1OMGFXOXVYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYkdWdVozUm9JSFJ2ZEdGc0lHNTFiV0psY2lCdlppQnZZbXBsWTNSelhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdiaUJ1ZFcxaVpYSWdiMllnWkdsMlpYSnpaU0JsYkdWdFpXNTBjeUIwYnlCbWFXNWtYRzRnS2lCQWNHRnlZVzBnZXlocE1Ub2diblZ0WW1WeUxDQnBNam9nYm5WdFltVnlLU0E5UGlCdWRXMWlaWEo5SUdScGMzUWdZU0JtZFc1amRHbHZiaUIzYUdsamFDQmpZV3hqZFd4aGRHVnpJR1JwYzNSaGJtTmxJR0psZEhkbFpXNWNiaUFxSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBkMjhnYjJKcVpXTjBjeUIxYzJsdVp5QjBhR1ZwY2lCcGJtUmxlR1Z6WEc0Z0tpQkFjbVYwZFhKdWN5QjdiblZ0WW1WeVcxMTlJRlJvWlNCcGJtUmxlR1Z6SUc5bUlIUm9aU0J0YjNOMElHUnBkbVZ5YzJVZ2IySnFaV04wYzF4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwUkdsMlpYSnpaVk4xWW5ObGRDaHNaVzVuZEdnNklHNTFiV0psY2l3Z2Jqb2diblZ0WW1WeUxDQmthWE4wT2lBb2FURTZJRzUxYldKbGNpd2dhVEk2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5S1RvZ2JuVnRZbVZ5VzEwZ2UxeHVJQ0JtZFc1amRHbHZiaUJ0WVhoQ2VTaDJZV3gxWlhNNklFbDBaWEpoWW14bFNYUmxjbUYwYjNJOGJuVnRZbVZ5UGl3Z2IzSmtaWEpDZVRvZ0tHazZJRzUxYldKbGNpa2dQVDRnYm5WdFltVnlLU0I3WEc0Z0lDQWdiR1YwSUcxaGVGWmhiSFZsSUQwZ2JuVnNiRHRjYmlBZ0lDQnNaWFFnYldGNFQzSmtaWEpDZVNBOUlHNTFiR3c3WEc1Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUdWc1pXMWxiblFnYjJZZ2RtRnNkV1Z6S1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JsYkdWdFpXNTBUM0prWlhKQ2VTQTlJRzl5WkdWeVFua29aV3hsYldWdWRDazdYRzRnSUNBZ0lDQnBaaUFvYldGNFQzSmtaWEpDZVNBOVBTQnVkV3hzSUh4OElHVnNaVzFsYm5SUGNtUmxja0o1SUQ0Z2JXRjRUM0prWlhKQ2VTa2dlMXh1SUNBZ0lDQWdJQ0J0WVhoV1lXeDFaU0E5SUdWc1pXMWxiblE3WEc0Z0lDQWdJQ0FnSUcxaGVFOXlaR1Z5UW5rZ1BTQmxiR1Z0Wlc1MFQzSmtaWEpDZVR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHMWhlRlpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdZMjl1YzNRZ2MzVmljMlYwSUQwZ1czSmhibVJ2YlVsdWRDaHNaVzVuZEdnZ0xTQXhLVjA3WEc0Z0lHTnZibk4wSUdOdmJYQnNaVzFsYm5RZ1BTQnVaWGNnVTJWMEtDazdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnNaVzVuZEdnN0lDc3JhU2tnZTF4dUlDQWdJR2xtSUNnaGMzVmljMlYwTG1sdVkyeDFaR1Z6S0drcEtWeHVJQ0FnSUNBZ1kyOXRjR3hsYldWdWRDNWhaR1FvYVNrN1hHNGdJSDFjYmx4dUlDQjNhR2xzWlNBb2MzVmljMlYwTG14bGJtZDBhQ0E4SUc0cElIdGNiaUFnSUNCamIyNXpkQ0JwWkhnZ1BTQnRZWGhDZVNoY2JpQWdJQ0FnSUdOdmJYQnNaVzFsYm5RdWRtRnNkV1Z6S0NrZ1lYTWdTWFJsY21GaWJHVkpkR1Z5WVhSdmNqeHVkVzFpWlhJK0xGeHVJQ0FnSUNBZ0tHa3BJRDArSUUxaGRHZ3ViV2x1TG1Gd2NHeDVLRTFoZEdnc0lITjFZbk5sZEM1dFlYQW9ablZ1WTNScGIyNG9kbUZzTENCcGJtUmxlQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWkdsemRDaHBMQ0IyWVd3cE8xeHVJQ0FnSUNBZ2ZTa3BLVHRjYmlBZ0lDQnBaaUFvYVdSNEtTQjdYRzRnSUNBZ0lDQnpkV0p6WlhRdWNIVnphQ2hwWkhncE8xeHVJQ0FnSUNBZ1kyOXRjR3hsYldWdWRDNWtaV3hsZEdVb2FXUjRLVHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjbVYwZFhKdUlITjFZbk5sZER0Y2JuMWNibHh1THlvcVhHNGdLaUJTWlhSMWNtNXpJRzV2Y20xaGJHbDZaV1FnZG1WamRHOXlYRzRnS2lCQWNHRnlZVzBnZTFabFkzUnZjbjBnWkdGMFlTQnVkVzFsY21sallXd2dZWEp5WVhsY2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJRzV2Y20xaGJHbDZaU2hrWVhSaE9pQldaV04wYjNJcE9pQldaV04wYjNJZ2UxeHVJQ0JzWlhRZ2JXVmhiaUE5SURBN1hHNGdJR3hsZENCemRHUWdQU0F3TzF4dVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWkdGMFlTNXNaVzVuZEdnN0lDc3JhU2xjYmlBZ0lDQnRaV0Z1SUNzOUlHUmhkR0ZiYVYwN1hHNWNiaUFnYldWaGJpQXZQU0JrWVhSaExteGxibWQwYUR0Y2JseHVJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdSaGRHRXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdjM1JrSUNzOUlDaGtZWFJoVzJsZElDMGdiV1ZoYmlrZ0tpQW9aR0YwWVZ0cFhTQXRJRzFsWVc0cE8xeHVYRzRnSUhOMFpDQTlJRTFoZEdndWMzRnlkQ2h6ZEdRZ0x5QmtZWFJoTG14bGJtZDBhQ2s3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JrWVhSaExteGxibWQwYURzZ0t5dHBLVnh1SUNBZ0lHUmhkR0ZiYVYwZ1BTQW9aR0YwWVZ0cFhTQXRJRzFsWVc0cElDOGdjM1JrTzF4dVhHNGdJSEpsZEhWeWJpQmtZWFJoTzF4dWZWeHVYRzR2S2lwY2JpQXFJRVpwYm1SeklITmxkQ0JrYVdabVpYSmxibU5sSUdKbGRIZGxaVzRnZEhkdklHeHBjM1J6TGx4dUlDb2dRSEJoY21GdElIdGhibmxiWFgwZ1lTQlVhR1VnWm1seWMzUWdiR2x6ZEM1Y2JpQXFJRUJ3WVhKaGJTQjdZVzU1VzExOUlHSWdWR2hsSUhObFkyOXVaQ0JzYVhOMExseHVJQ29nUUhKbGRIVnliaUI3WVc1NVcxMTlYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCelpYUkVhV1ptWlhKbGJtTmxLR0U2SUdGdWVWdGRMQ0JpT2lCaGJubGJYU2s2SUdGdWVWdGRJSHRjYmlBZ1kyOXVjM1FnWWxObGRDQTlJRzVsZHlCVFpYUW9ZaWs3WEc0Z0lISmxkSFZ5YmlCQmNuSmhlUzVtY205dEtHNWxkeUJUWlhRb1lTNW1hV3gwWlhJb0tIZ3BJRDArSUNGaVUyVjBMbWhoY3loNEtTa3BMblpoYkhWbGN5Z3BLVHRjYm4xY2JpSmRmUT09IiwiaW1wb3J0IHsgU2VxUGFsZXR0ZUJhc2UgfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5leHBvcnQgY2xhc3MgQW1pbm9hY2lkc1BhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgTGVzaygpIHtcbiAgICAgICAgaWYgKHRoaXMubGVzayA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmxlc2sgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydHJywgJ0EnLCAnUycsICdUJ10sICdvcmFuZ2UnXSxcbiAgICAgICAgICAgICAgICBbWydDJywgJ1YnLCAnSScsICdMJywgJ1AnLCAnRicsICdZJywgJ00nLCAnVyddLCAnYWxsX2dyZWVuJ10sXG4gICAgICAgICAgICAgICAgW1snTicsICdRJywgJ0gnXSwgJ21hZ2VudGEnXSxcbiAgICAgICAgICAgICAgICBbWydEJywgJ0UnXSwgJ3JlZCddLFxuICAgICAgICAgICAgICAgIFtbJ0snLCAnUiddLCAnYWxsX2JsdWUnXSxcbiAgICAgICAgICAgIF0sIGZhbHNlLCBBbWlub2FjaWRzUGFsZXR0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmxlc2s7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgR3Jva0dyb3VwcygpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3Jva0dyb3VwcyA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICB0aGlzLmdyb2tHcm91cHMgPSB0aGlzLm1ha2VQYWxldHRlKFtcbiAgICAgICAgICAgICAgICBbWydDJywgJ1UnXSwgJ3llbGxvdyddLFxuICAgICAgICAgICAgICAgIFtbJ0cnLCAnUCddLCAncmVkJ10sXG4gICAgICAgICAgICAgICAgW1snQScsICdWJywgJ0knLCAnTCcsICdNJywgJ0YnLCAnWScsICdXJ10sICdhbGxfZ3JlZW4nXSxcbiAgICAgICAgICAgICAgICBbWydSJywgJ0gnLCAnSyddLCAnbGlnaHRfYmx1ZSddLFxuICAgICAgICAgICAgICAgIFtbJ0QnLCAnRSddLCAnZGFya19ibHVlJ10sXG4gICAgICAgICAgICAgICAgW1snUycsICdUJywgJ04nLCAnUSddLCAnb3JhbmdlJ10sXG4gICAgICAgICAgICBdLCBmYWxzZSwgQW1pbm9hY2lkc1BhbGV0dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ncm9rR3JvdXBzO1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0IFJhc01vbCgpIHtcbiAgICAgICAgaWYgKHRoaXMucmFzTW9sID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMucmFzTW9sID0gbmV3IEFtaW5vYWNpZHNQYWxldHRlcyh7XG4gICAgICAgICAgICAgICAgLy8gaHR0cDovL2FjY2VzLmVucy1seW9uLmZyL2Jpb3RpYy9yYXN0b3AvaGVscC9jb2xvdXIuaHRtXG4gICAgICAgICAgICAgICAgJ0QnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0UnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0MnOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ00nOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ0snOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1InOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1MnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ1QnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ0YnOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ1knOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ04nOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ1EnOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ0cnOiAnI0VCRUJFQicsXG4gICAgICAgICAgICAgICAgJ0wnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ1YnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0knOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0EnOiAnI0M4QzhDOCcsXG4gICAgICAgICAgICAgICAgJ1cnOiAnI0I0NUFCNCcsXG4gICAgICAgICAgICAgICAgJ0gnOiAnIzgyODJEMicsXG4gICAgICAgICAgICAgICAgJ1AnOiAnI0RDOTY4MicsXG4gICAgICAgICAgICAgICAgJ290aGVycyc6ICcjQkVBMDZFJyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJhc01vbDtcbiAgICB9XG4gICAgZ2V0KG0pIHtcbiAgICAgICAgY29uc3QgcmVzTSA9IG0gaW4gQW1pbm9hY2lkc1BhbGV0dGVzLmFhU3lub255bXMgPyBBbWlub2FjaWRzUGFsZXR0ZXMuYWFTeW5vbnltc1ttXSA6IG07XG4gICAgICAgIGNvbnN0IHJlcyA9IHN1cGVyLmdldChyZXNNKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG59XG4vKiogT25seSBzb21lIG9mIHRoZSBzeW5vbnltcy4gVGhlc2Ugd2VyZSBvYnRhaW5lZCBmcm9tIHRoZSBjbHVzdGVyZWQgb2xpZ29wZXB0aWRlIGRhdGFzZXQuICovXG5BbWlub2FjaWRzUGFsZXR0ZXMuYWFTeW5vbnltcyA9IHtcbiAgICAnTWVObGUnOiAnTCcsXG4gICAgJ01lQSc6ICdBJyxcbiAgICAnTWVHJzogJ0cnLFxuICAgICdNZUYnOiAnRicsXG59O1xuZXhwb3J0IGNsYXNzIEFtaW5vYWNpZHMge1xuICAgIHN0YXRpYyBnZXRQYWxldHRlKHNjaGVtZSA9ICdncm9rJykge1xuICAgICAgICBzd2l0Y2ggKHNjaGVtZSkge1xuICAgICAgICAgICAgY2FzZSAnZ3Jvayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzO1xuICAgICAgICAgICAgY2FzZSAnbGVzayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5MZXNrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENoZW1QYWxldHRlOiBzY2hlbWUgXFxgJHtzY2hlbWV9XFxgIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBkaXZpZGVkIGFtaW5vIGFjaWQgd2l0aCBpdHMgY29udGVudCBpbiB0aGUgYnJhY2tldCwgaWYgdGhlIGNvbnRlbnQgaXMgbnVtYmVyLCB0aGVuIGl0cyBvbWl0dGVkXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYyByYXcgYW1pbm9cbiAgICAgKiBAcmV0dXJuIHtbc3RyaW5nLCBzdHJpbmddfSBvdXRlciBhbmQgaW5uZXIgY29udGVudFxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRJbm5lck91dGVyKGMpIHtcbiAgICAgICAgbGV0IGlzSW5uZXIgPSAwO1xuICAgICAgICBsZXQgaW5uZXIgPSAnJztcbiAgICAgICAgbGV0IG91dGVyID0gJyc7XG4gICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBjKSB7XG4gICAgICAgICAgICBpZiAoY2hhciA9PSAnKCcpXG4gICAgICAgICAgICAgICAgaXNJbm5lcisrO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2hhciA9PSAnKScpXG4gICAgICAgICAgICAgICAgaXNJbm5lci0tO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNJbm5lcilcbiAgICAgICAgICAgICAgICBpbm5lciArPSBjaGFyO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG91dGVyICs9IGNoYXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFpc05hTihwYXJzZUludChpbm5lcikpID8gW291dGVyLCAnJ10gOiBbb3V0ZXIsIGlubmVyXTtcbiAgICB9XG4gICAgc3RhdGljIGdldENvbG9yQUFQaXZvdChtb25vbWVyID0gJycsIHNjaGVtZSA9ICdncm9rJykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgLy9jb25zdCBjaGVtUGFsZXR0ZUluc3RhbmNlID0gQUFQYWxldHRlcy5Hcm9rR3JvdXBzKCk7XG4gICAgICAgIGNvbnN0IGNoZW1QYWxldHRlSW5zdGFuY2UgPSB0aGlzLmdldFBhbGV0dGUoc2NoZW1lKTtcbiAgICAgICAgbGV0IFtvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lcl0gPSB0aGlzLmdldElubmVyT3V0ZXIobW9ub21lcik7XG4gICAgICAgIG91dGVyTW9ub21lciA9IChvdXRlck1vbm9tZXIubGVuZ3RoID4gNiA/IGAke291dGVyTW9ub21lci5zbGljZSgwLCAzKX0uLi5gIDogb3V0ZXJNb25vbWVyKTtcbiAgICAgICAgaW5uZXJNb25vbWVyID0gKGlubmVyTW9ub21lci5sZW5ndGggPiA2ID8gYCR7aW5uZXJNb25vbWVyLnNsaWNlKDAsIDMpfS4uLmAgOiBpbm5lck1vbm9tZXIpO1xuICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gMSB8fCBtb25vbWVyWzFdID09ICcoJykge1xuICAgICAgICAgICAgY29uc3QgYW1pbm8gPSAoX2EgPSBtb25vbWVyWzBdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZS5nZXQoYW1pbm8pLCBhbWlubywgaW5uZXJNb25vbWVyLCAxXSA6XG4gICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAxXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobW9ub21lclswXSA9PSAnZCcgJiYgbW9ub21lclsxXSBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gMiB8fCBtb25vbWVyWzJdID09ICcoJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gKF9iID0gbW9ub21lclsxXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZS5nZXQoYW1pbm8pLCBhbWlubywgaW5uZXJNb25vbWVyLCAyXSA6XG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgMl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1vbm9tZXIuc3Vic3RyaW5nKDAsIDMpIGluIHRoaXMuQUFGdWxsTmFtZXMpIHtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSAzIHx8IG1vbm9tZXJbM10gPT0gJygnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYW1pbm8gPSB0aGlzLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDAsIDMpXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDNdIDpcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKChfYyA9IG1vbm9tZXJbMF0pID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy50b0xvd2VyQ2FzZSgpKSA9PSBtb25vbWVyWzBdKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lci5zdWJzdHJpbmcoMSwgMykgaW4gdGhpcy5BQUZ1bGxOYW1lcykge1xuICAgICAgICAgICAgICAgIGlmIChtb25vbWVyLmxlbmd0aCA9PSA0IHx8IG1vbm9tZXJbNF0gPT0gJygnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gdGhpcy5BQUZ1bGxOYW1lc1ttb25vbWVyLnN1YnN0cmluZygxLCAzKV07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlLmdldChhbWlubyksIGFtaW5vLCBpbm5lck1vbm9tZXIsIDRdIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgNF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDBdO1xuICAgIH1cbn1cbkFtaW5vYWNpZHMuU2VtVHlwZSA9ICdBbWlub2FjaWRzJztcbkFtaW5vYWNpZHMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50ID0gJ0FtaW5vYWNpZHNNdWx0aXBsZUFsaWdubWVudCc7XG5BbWlub2FjaWRzLnVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuQW1pbm9hY2lkcy5OYW1lcyA9IHtcbiAgICAnRyc6ICdHbHljaW5lJyxcbiAgICAnTCc6ICdMZXVjaW5lJyxcbiAgICAnWSc6ICdUeXJvc2luZScsXG4gICAgJ1MnOiAnU2VyaW5lJyxcbiAgICAnRSc6ICdHbHV0YW1pYyBhY2lkJyxcbiAgICAnUSc6ICdHbHV0YW1pbmUnLFxuICAgICdEJzogJ0FzcGFydGljIGFjaWQnLFxuICAgICdOJzogJ0FzcGFyYWdpbmUnLFxuICAgICdGJzogJ1BoZW55bGFsYW5pbmUnLFxuICAgICdBJzogJ0FsYW5pbmUnLFxuICAgICdLJzogJ0x5c2luZScsXG4gICAgJ1InOiAnQXJnaW5pbmUnLFxuICAgICdIJzogJ0hpc3RpZGluZScsXG4gICAgJ0MnOiAnQ3lzdGVpbmUnLFxuICAgICdWJzogJ1ZhbGluZScsXG4gICAgJ1AnOiAnUHJvbGluZScsXG4gICAgJ1cnOiAnVHJ5cHRvcGhhbicsXG4gICAgJ0knOiAnSXNvbGV1Y2luZScsXG4gICAgJ00nOiAnTWV0aGlvbmluZScsXG4gICAgJ1QnOiAnVGhyZW9uaW5lJyxcbn07XG5BbWlub2FjaWRzLkFBU21pbGVzID0ge1xuICAgICdHJzogJ05DQyg9TylPJyxcbiAgICAnTCc6ICdOW0NASF0oQ0MoQylDKUMoPU8pTycsXG4gICAgJ1knOiAnTkMoQ0MxPUNDPUMoTylDPUMxKUMoPU8pTycsXG4gICAgJ1MnOiAnTkMoQ08pQyg9TylPJyxcbiAgICAnRSc6ICdOW0NAQEhdKENDQyhPKT1PKUMoPU8pTycsXG4gICAgJ1EnOiAnTltDQEBIXShDQ0MoTik9TylDKD1PKU8nLFxuICAgICdEJzogJ05bQ0BASF0oQ0MoTyk9TylDKD1PKU8nLFxuICAgICdOJzogJ05bQ0BASF0oQ0MoTik9TylDKD1PKU8nLFxuICAgICdGJzogJ05DKENDMT1DQz1DQz1DMSlDKD1PKU8nLFxuICAgICdBJzogJ05bQ0BIXShDKUMoPU8pTycsXG4gICAgJ0snOiAnTkMoQ0NDQ04pQyg9TylPJyxcbiAgICAnUic6ICdOW0NASF0oQ0NDTkMoPU4pQylDKD1PKU8nLFxuICAgICdIJzogJ05DKENDMT1DTj1DW05dMSlDKD1PKU8nLFxuICAgICdDJzogJ05bQ0BASF0oQ1MpQyg9TylPJyxcbiAgICAnVic6ICdOQyhDKEMpQylDKD1PKU8nLFxuICAgICdQJzogJ04oQ0NDMSlDMUMoPU8pTycsXG4gICAgJ1cnOiAnTltDQEBIXShDYzFjMmNjY2NjMm4oW0hdKWMxKUMoPU8pTycsXG4gICAgJ0knOiAnTltDQEhdKFtDQEhdKEMpQ0MpQyg9TylPJyxcbiAgICAnTSc6ICdOQyhDQ1NDKUMoPU8pTycsXG4gICAgJ1QnOiAnTkMoQyhPKUMpQyg9TylPJyxcbn07XG5BbWlub2FjaWRzLkFBU21pbGVzVHJ1bmNhdGVkID0ge1xuICAgICdHJzogJypDKicsXG4gICAgJ0wnOiAnQ0MoQylDW0NASF0oKikqJyxcbiAgICAnWSc6ICdDMT1DQyg9Q0M9QzFDQygqKSopTycsXG4gICAgJ1MnOiAnT0NDKCopQyonLFxuICAgICdFJzogJypbQ0BASF0oQ0NDKE8pPU8pKicsXG4gICAgJ1EnOiAnKk5bQ0BASF0oQ0NDKE4pPU8pKicsXG4gICAgJ0QnOiAnKltDQEBIXShDQyhPKT1PKSonLFxuICAgICdOJzogJypbQ0BASF0oQ0MoTik9TykqJyxcbiAgICAnRic6ICdDMT1DQz1DKEM9QzEpQ0MoKikqJyxcbiAgICAnQSc6ICdDW0NASF0oKikqJyxcbiAgICAnSyc6ICdDKENDTilDQygqKSonLFxuICAgICdSJzogJypbQ0BIXShDQ0NOQyg9TilDKSonLFxuICAgICdIJzogJ0MxPUMoTkM9TjEpQ0MoKikqJyxcbiAgICAnQyc6ICdDKFtDQEBIXSgqKSopUycsXG4gICAgJ1YnOiAnQ0MoQylDKCopKicsXG4gICAgJ1AnOiAnQzFDQ04oKilDMSonLFxuICAgICdXJzogJypbQ0BASF0oQ2MxYzJjY2NjYzJuKFtIXSljMSkqJyxcbiAgICAnSSc6ICdDQ1tDQEhdKEMpW0NASF0oKikqJyxcbiAgICAnTSc6ICdDU0NDQygqKSonLFxuICAgICdUJzogJ0NDKE8pQygqKSonLFxufTtcbi8qKiBUT0RPOiBGdWxsP1xuICovXG5BbWlub2FjaWRzLkFBRnVsbE5hbWVzID0ge1xuICAgICdBbGEnOiAnQScsXG4gICAgJ0FyZyc6ICdSJyxcbiAgICAnQXNuJzogJ04nLFxuICAgICdBc3AnOiAnRCcsXG4gICAgJ0N5cyc6ICdDJyxcbiAgICAnR2xuJzogJ1EnLFxuICAgICdHbHUnOiAnRScsXG4gICAgJ0dseSc6ICdHJyxcbiAgICAnSGlzJzogJ0gnLFxuICAgICdJbGUnOiAnSScsXG4gICAgJ0xldSc6ICdMJyxcbiAgICAnTHlzJzogJ0snLFxuICAgICdNZXQnOiAnTScsXG4gICAgJ1BoZSc6ICdGJyxcbiAgICAnUHJvJzogJ1AnLFxuICAgICdTZXInOiAnUycsXG4gICAgJ1Rocic6ICdUJyxcbiAgICAnVHJwJzogJ1cnLFxuICAgICdUeXInOiAnWScsXG4gICAgJ1ZhbCc6ICdWJyxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZVzFwYm05aFkybGtjeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkltRnRhVzV2WVdOcFpITXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUzBFc1QwRkJUeXhGUVVGaExHTkJRV01zUlVGQlF5eE5RVUZOTEdkQ1FVRm5RaXhEUVVGRE8wRkJSVEZFTEUxQlFVMHNUMEZCVHl4clFrRkJiVUlzVTBGQlVTeGpRVUZqTzBsQlJ6ZERMRTFCUVUwc1MwRkJTeXhKUVVGSk8xRkJRM0JDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1MwRkJTeXhMUVVGTExFTkJRVU1zUlVGQlJUdFpRVU40UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTTdaMEpCUXpOQ0xFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTTdaMEpCUTJoRExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkROVVFzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzVTBGQlV5eERRVUZETzJkQ1FVTTFRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJRenRuUWtGRGJrSXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFZRVUZWTEVOQlFVTTdZVUZEZWtJc1JVRkJSU3hMUVVGTExFVkJRVVVzYTBKQlFXdENMRU5CUVVNc1EwRkJRenRUUVVNdlFqdFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRKUVVOdVFpeERRVUZETzBsQlNVMHNUVUZCVFN4TFFVRkxMRlZCUVZVN1VVRkRNVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNWVUZCVlN4TFFVRkxMRXRCUVVzc1EwRkJReXhGUVVGRk8xbEJRemxDTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF6dG5Ra0ZEYWtNc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSVUZCUlN4UlFVRlJMRU5CUVVNN1owSkJRM1JDTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETzJkQ1FVTnVRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxGZEJRVmNzUTBGQlF6dG5Ra0ZEZGtRc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRVZCUVVVc1dVRkJXU3hEUVVGRE8yZENRVU12UWl4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkRla0lzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZGQlFWRXNRMEZCUXp0aFFVTnFReXhGUVVGRkxFdEJRVXNzUlVGQlJTeHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8xTkJReTlDTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRE8wbEJRM3BDTEVOQlFVTTdTVUZKVFN4TlFVRk5MRXRCUVVzc1RVRkJUVHRSUVVOMFFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1MwRkJTeXhEUVVGRExFVkJRVVU3V1VGRE1VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxHdENRVUZyUWl4RFFVRkRPMmRDUVVOdVF5eDVSRUZCZVVRN1owSkJRM3BFTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8yZENRVU5rTEVkQlFVY3NSVUZCUlN4VFFVRlRPMmRDUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzJkQ1FVTmtMRkZCUVZFc1JVRkJSU3hUUVVGVE8yRkJRM0JDTEVOQlFVTXNRMEZCUXp0VFFVTktPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzBsQlEzSkNMRU5CUVVNN1NVRkZaU3hIUVVGSExFTkJRVU1zUTBGQlV6dFJRVU16UWl4TlFVRk5MRWxCUVVrc1IwRkJSeXhEUVVGRExFbEJRVWtzYTBKQlFXdENMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOMlJpeE5RVUZOTEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlF6VkNMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzUTBGQlF6czdRVUZGUkN3NFJrRkJPRVk3UVVGREwwVXNOa0pCUVZVc1IwRkJLMEk3U1VGRGRFUXNUMEZCVHl4RlFVRkZMRWRCUVVjN1NVRkRXaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3UTBGRFdDeERRVUZETzBGQlIwb3NUVUZCVFN4UFFVRlBMRlZCUVZVN1NVRnhSMlFzVFVGQlRTeERRVUZETEZWQlFWVXNRMEZCUXl4VFFVRnBRaXhOUVVGTk8xRkJRemxETEZGQlFWRXNUVUZCVFN4RlFVRkZPMWxCUTJoQ0xFdEJRVXNzVFVGQlRUdG5Ra0ZEVkN4UFFVRlBMR3RDUVVGclFpeERRVUZETEZWQlFWVXNRMEZCUXp0WlFVTjJReXhMUVVGTExFMUJRVTA3WjBKQlExUXNUMEZCVHl4clFrRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTTdXVUZEYWtNN1owSkJRMFVzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4NVFrRkJlVUlzVFVGQlRTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8xTkJRM0pGTzBsQlEwZ3NRMEZCUXp0SlFVVkVPenM3T3p0UFFVdEhPMGxCUTBrc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZUTzFGQlEyNURMRWxCUVVrc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5vUWl4SlFVRkpMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU03VVVGRFppeEpRVUZKTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkZaaXhMUVVGTExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNSVUZCUlR0WlFVTndRaXhKUVVGSkxFbEJRVWtzU1VGQlNTeEhRVUZITzJkQ1FVTmlMRTlCUVU4c1JVRkJSU3hEUVVGRE8ybENRVU5RTEVsQlFVa3NTVUZCU1N4SlFVRkpMRWRCUVVjN1owSkJRMnhDTEU5QlFVOHNSVUZCUlN4RFFVRkRPMmxDUVVOUUxFbEJRVWtzVDBGQlR6dG5Ra0ZEWkN4TFFVRkxMRWxCUVVrc1NVRkJTU3hEUVVGRE96dG5Ra0ZGWkN4TFFVRkxMRWxCUVVrc1NVRkJTU3hEUVVGRE8xTkJRMnBDTzFGQlJVUXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzBsQlEyaEZMRU5CUVVNN1NVRkZUU3hOUVVGTkxFTkJRVU1zWlVGQlpTeERRVUZETEZWQlFXdENMRVZCUVVVc1JVRkJSU3hUUVVGcFFpeE5RVUZOT3p0UlFVTjZSU3h6UkVGQmMwUTdVVUZEZEVRc1RVRkJUU3h0UWtGQmJVSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFGQlEzQkVMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVVzV1VGQldTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU12UkN4WlFVRlpMRWRCUVVjc1EwRkJReXhaUVVGWkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhaUVVGWkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0UlFVTXpSaXhaUVVGWkxFZEJRVWNzUTBGQlF5eFpRVUZaTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFpRVUZaTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRSUVVVelJpeEpRVUZKTEU5QlFVOHNRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVN1dVRkROVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NUVUZCUVN4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExEQkRRVUZGTEZkQlFWY3NSVUZCUnl4RFFVRkRPMWxCUTNwRExFOUJRVThzUzBGQlN5eEpRVUZKTEcxQ1FVRnRRaXhEUVVGRExFTkJRVU03WjBKQlEyNURMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFdEJRVXNzUlVGQlJTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE1VUXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRlRVE3VVVGRlJDeEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUlN4SlFVRkpMRzFDUVVGdFFpeEZRVUZGTzFsQlF6TkVMRWxCUVVrc1QwRkJUeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJUdG5Ra0ZETlVNc1RVRkJUU3hMUVVGTExFZEJRVWNzVFVGQlFTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMREJEUVVGRkxGZEJRVmNzUlVGQlJ5eERRVUZETzJkQ1FVTjZReXhQUVVGUExFdEJRVXNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8yOUNRVU51UXl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRekZFTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFVkJRVVVzV1VGQldTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTNoRU8xTkJRMFk3VVVGRlJDeEpRVUZKTEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVN1dVRkRMME1zU1VGQlNTeFBRVUZQTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZPMmRDUVVNMVF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlEzaEVMRTlCUVU4c1MwRkJTeXhKUVVGSkxHMUNRVUZ0UWl4RFFVRkRMRU5CUVVNN2IwSkJRMjVETEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRXRCUVVzc1JVRkJSU3haUVVGWkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRNVVFzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRmxCUVZrc1JVRkJSU3haUVVGWkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEZUVRN1UwRkRSanRSUVVWRUxFbEJRVWtzUTBGQlFTeE5RVUZCTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc01FTkJRVVVzVjBGQlZ5eEZRVUZGTEV0QlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk8xbEJRek5ETEVsQlFVa3NUMEZCVHl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSVHRuUWtGREwwTXNTVUZCU1N4UFFVRlBMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhGUVVGRk8yOUNRVU0xUXl4TlFVRk5MRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEU5QlFVOHNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTNoRUxFOUJRVThzUzBGQlN5eEpRVUZKTEcxQ1FVRnRRaXhEUVVGRExFTkJRVU03ZDBKQlEyNURMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFdEJRVXNzUlVGQlJTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenQzUWtGRE1VUXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN2FVSkJRM2hFTzJGQlEwWTdVMEZEUmp0UlFVVkVMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZGTEZsQlFWa3NSVUZCUlN4WlFVRlpMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRE9VUXNRMEZCUXpzN1FVRndUR1VzYTBKQlFVOHNSMEZCVnl4WlFVRlpMRU5CUVVNN1FVRkZMMElzYlVOQlFYZENMRWRCUVZjc05rSkJRVFpDTEVOQlFVTTdRVUZGTVVVc2VVSkJRV01zUjBGQlJ5eHJRa0ZCYTBJc1EwRkJRenRCUVVVM1FpeG5Ra0ZCU3l4SFFVRnhRanRKUVVOMFF5eEhRVUZITEVWQlFVVXNVMEZCVXp0SlFVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8wbEJRMlFzUjBGQlJ5eEZRVUZGTEZWQlFWVTdTVUZEWml4SFFVRkhMRVZCUVVVc1VVRkJVVHRKUVVOaUxFZEJRVWNzUlVGQlJTeGxRVUZsTzBsQlEzQkNMRWRCUVVjc1JVRkJSU3hYUVVGWE8wbEJRMmhDTEVkQlFVY3NSVUZCUlN4bFFVRmxPMGxCUTNCQ0xFZEJRVWNzUlVGQlJTeFpRVUZaTzBsQlEycENMRWRCUVVjc1JVRkJSU3hsUVVGbE8wbEJRM0JDTEVkQlFVY3NSVUZCUlN4VFFVRlRPMGxCUTJRc1IwRkJSeXhGUVVGRkxGRkJRVkU3U1VGRFlpeEhRVUZITEVWQlFVVXNWVUZCVlR0SlFVTm1MRWRCUVVjc1JVRkJSU3hYUVVGWE8wbEJRMmhDTEVkQlFVY3NSVUZCUlN4VlFVRlZPMGxCUTJZc1IwRkJSeXhGUVVGRkxGRkJRVkU3U1VGRFlpeEhRVUZITEVWQlFVVXNVMEZCVXp0SlFVTmtMRWRCUVVjc1JVRkJSU3haUVVGWk8wbEJRMnBDTEVkQlFVY3NSVUZCUlN4WlFVRlpPMGxCUTJwQ0xFZEJRVWNzUlVGQlJTeFpRVUZaTzBsQlEycENMRWRCUVVjc1JVRkJSU3hYUVVGWE8wTkJRMnBDTEVOQlFVTTdRVUZGV1N4dFFrRkJVU3hIUVVGeFFqdEpRVU42UXl4SFFVRkhMRVZCUVVVc1ZVRkJWVHRKUVVObUxFZEJRVWNzUlVGQlJTeHpRa0ZCYzBJN1NVRkRNMElzUjBGQlJ5eEZRVUZGTERKQ1FVRXlRanRKUVVOb1F5eEhRVUZITEVWQlFVVXNZMEZCWXp0SlFVTnVRaXhIUVVGSExFVkJRVVVzZVVKQlFYbENPMGxCUXpsQ0xFZEJRVWNzUlVGQlJTeDVRa0ZCZVVJN1NVRkRPVUlzUjBGQlJ5eEZRVUZGTEhkQ1FVRjNRanRKUVVNM1FpeEhRVUZITEVWQlFVVXNkMEpCUVhkQ08wbEJRemRDTEVkQlFVY3NSVUZCUlN4M1FrRkJkMEk3U1VGRE4wSXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdEpRVU4wUWl4SFFVRkhMRVZCUVVVc2FVSkJRV2xDTzBsQlEzUkNMRWRCUVVjc1JVRkJSU3d3UWtGQk1FSTdTVUZETDBJc1IwRkJSeXhGUVVGRkxIZENRVUYzUWp0SlFVTTNRaXhIUVVGSExFVkJRVVVzYlVKQlFXMUNPMGxCUTNoQ0xFZEJRVWNzUlVGQlJTeHBRa0ZCYVVJN1NVRkRkRUlzUjBGQlJ5eEZRVUZGTEdsQ1FVRnBRanRKUVVOMFFpeEhRVUZITEVWQlFVVXNiME5CUVc5RE8wbEJRM3BETEVkQlFVY3NSVUZCUlN3d1FrRkJNRUk3U1VGREwwSXNSMEZCUnl4RlFVRkZMR2RDUVVGblFqdEpRVU55UWl4SFFVRkhMRVZCUVVVc2FVSkJRV2xDTzBOQlEzWkNMRU5CUVVNN1FVRkZXU3cwUWtGQmFVSXNSMEZCY1VJN1NVRkRiRVFzUjBGQlJ5eEZRVUZGTEV0QlFVczdTVUZEVml4SFFVRkhMRVZCUVVVc2FVSkJRV2xDTzBsQlEzUkNMRWRCUVVjc1JVRkJSU3h6UWtGQmMwSTdTVUZETTBJc1IwRkJSeXhGUVVGRkxGVkJRVlU3U1VGRFppeEhRVUZITEVWQlFVVXNiMEpCUVc5Q08wbEJRM3BDTEVkQlFVY3NSVUZCUlN4eFFrRkJjVUk3U1VGRE1VSXNSMEZCUnl4RlFVRkZMRzFDUVVGdFFqdEpRVU40UWl4SFFVRkhMRVZCUVVVc2JVSkJRVzFDTzBsQlEzaENMRWRCUVVjc1JVRkJSU3h4UWtGQmNVSTdTVUZETVVJc1IwRkJSeXhGUVVGRkxGbEJRVms3U1VGRGFrSXNSMEZCUnl4RlFVRkZMR05CUVdNN1NVRkRia0lzUjBGQlJ5eEZRVUZGTEhGQ1FVRnhRanRKUVVNeFFpeEhRVUZITEVWQlFVVXNiVUpCUVcxQ08wbEJRM2hDTEVkQlFVY3NSVUZCUlN4blFrRkJaMEk3U1VGRGNrSXNSMEZCUnl4RlFVRkZMRmxCUVZrN1NVRkRha0lzUjBGQlJ5eEZRVUZGTEdGQlFXRTdTVUZEYkVJc1IwRkJSeXhGUVVGRkxDdENRVUVyUWp0SlFVTndReXhIUVVGSExFVkJRVVVzY1VKQlFYRkNPMGxCUXpGQ0xFZEJRVWNzUlVGQlJTeFhRVUZYTzBsQlEyaENMRWRCUVVjc1JVRkJSU3haUVVGWk8wTkJRMnhDTEVOQlFVTTdRVUZGUmp0SFFVTkhPMEZCUTFjc2MwSkJRVmNzUjBGQmNVSTdTVUZETlVNc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0RFFVTllMRU5CUVVNaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ0tpQmhjeUJuY205cklHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOW5jbTlySnp0Y2JtbHRjRzl5ZENBcUlHRnpJSFZwSUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5MWFTYzdYRzVwYlhCdmNuUWdLaUJoY3lCRVJ5Qm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZaR2NuTzF4dVhHNXBiWEJ2Y25RZ2UxTjBjbWx1WjBScFkzUnBiMjVoY25sOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzUjVjR1V0WkdWamJHRnlZWFJwYjI1ekp6dGNibWx0Y0c5eWRDQjdVMlZ4VUdGc1pYUjBaU3dnVTJWeFVHRnNaWFIwWlVKaGMyVjlJR1p5YjIwZ0p5NHZjMlZ4TFhCaGJHVjBkR1Z6Snp0Y2JseHVaWGh3YjNKMElHTnNZWE56SUVGdGFXNXZZV05wWkhOUVlXeGxkSFJsY3lCbGVIUmxibVJ6SUZObGNWQmhiR1YwZEdWQ1lYTmxJSHRjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nYkdWemF6b2dVMlZ4VUdGc1pYUjBaVHRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUdkbGRDQk1aWE5yS0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxteGxjMnNnUFQwOUlIWnZhV1FnTUNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVzWlhOcklEMGdkR2hwY3k1dFlXdGxVR0ZzWlhSMFpTaGJYRzRnSUNBZ0lDQWdJRnRiSjBjbkxDQW5RU2NzSUNkVEp5d2dKMVFuWFN3Z0oyOXlZVzVuWlNkZExGeHVJQ0FnSUNBZ0lDQmJXeWRESnl3Z0oxWW5MQ0FuU1Njc0lDZE1KeXdnSjFBbkxDQW5SaWNzSUNkWkp5d2dKMDBuTENBblZ5ZGRMQ0FuWVd4c1gyZHlaV1Z1SjEwc1hHNGdJQ0FnSUNBZ0lGdGJKMDRuTENBblVTY3NJQ2RJSjEwc0lDZHRZV2RsYm5SaEoxMHNYRzRnSUNBZ0lDQWdJRnRiSjBRbkxDQW5SU2RkTENBbmNtVmtKMTBzWEc0Z0lDQWdJQ0FnSUZ0Ykowc25MQ0FuVWlkZExDQW5ZV3hzWDJKc2RXVW5YU3hjYmlBZ0lDQWdJRjBzSUdaaGJITmxMQ0JCYldsdWIyRmphV1J6VUdGc1pYUjBaWE1wTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVzWlhOck8xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQnpkR0YwYVdNZ1ozSnZhMGR5YjNWd2N6b2dVMlZ4VUdGc1pYUjBaVHRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUdkbGRDQkhjbTlyUjNKdmRYQnpLQ2s2SUZObGNWQmhiR1YwZEdVZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG1keWIydEhjbTkxY0hNZ1BUMDlJSFp2YVdRZ01Da2dlMXh1SUNBZ0lDQWdkR2hwY3k1bmNtOXJSM0p2ZFhCeklEMGdkR2hwY3k1dFlXdGxVR0ZzWlhSMFpTaGJYRzRnSUNBZ0lDQWdJRnRiSjBNbkxDQW5WU2RkTENBbmVXVnNiRzkzSjEwc1hHNGdJQ0FnSUNBZ0lGdGJKMGNuTENBblVDZGRMQ0FuY21Wa0oxMHNYRzRnSUNBZ0lDQWdJRnRiSjBFbkxDQW5WaWNzSUNkSkp5d2dKMHduTENBblRTY3NJQ2RHSnl3Z0oxa25MQ0FuVnlkZExDQW5ZV3hzWDJkeVpXVnVKMTBzWEc0Z0lDQWdJQ0FnSUZ0YkoxSW5MQ0FuU0Njc0lDZExKMTBzSUNkc2FXZG9kRjlpYkhWbEoxMHNYRzRnSUNBZ0lDQWdJRnRiSjBRbkxDQW5SU2RkTENBblpHRnlhMTlpYkhWbEoxMHNYRzRnSUNBZ0lDQWdJRnRiSjFNbkxDQW5WQ2NzSUNkT0p5d2dKMUVuWFN3Z0oyOXlZVzVuWlNkZExGeHVJQ0FnSUNBZ1hTd2dabUZzYzJVc0lFRnRhVzV2WVdOcFpITlFZV3hsZEhSbGN5azdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtZHliMnRIY205MWNITTdYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5QnlZWE5OYjJ3NklGTmxjVkJoYkdWMGRHVTdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJuWlhRZ1VtRnpUVzlzS0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxuSmhjMDF2YkNBOVBUMGdkbTlwWkNBd0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG5KaGMwMXZiQ0E5SUc1bGR5QkJiV2x1YjJGamFXUnpVR0ZzWlhSMFpYTW9lMXh1SUNBZ0lDQWdJQ0F2THlCb2RIUndPaTh2WVdOalpYTXVaVzV6TFd4NWIyNHVabkl2WW1sdmRHbGpMM0poYzNSdmNDOW9aV3h3TDJOdmJHOTFjaTVvZEcxY2JpQWdJQ0FnSUNBZ0owUW5PaUFuSTBVMk1FRXdRU2NzSUM4dklHRnpjQ3dnWVhOd1lYSjBhV01nWVdOcFpDd2dZWE53WEc0Z0lDQWdJQ0FnSUNkRkp6b2dKeU5GTmpCQk1FRW5MQ0F2THlCbmJIVXNJR2RzZFhSaGJXbGpJR0ZqYVdSY2JpQWdJQ0FnSUNBZ0owTW5PaUFuSTBVMlJUWXdNQ2NzSUM4dklHTjVjeXdnWTNsemRHVnBibVZjYmlBZ0lDQWdJQ0FnSjAwbk9pQW5JMFUyUlRZd01DY3NJQzh2SUcxbGRDd2diV1YwYUdsdmJtbHVaVnh1SUNBZ0lDQWdJQ0FuU3ljNklDY2pNVFExUVVaR0p5d2dMeThnYkhsekxDQnNlWE5wYm1WY2JpQWdJQ0FnSUNBZ0oxSW5PaUFuSXpFME5VRkdSaWNzSUM4dklHRnlaeXdnWVhKbmFXNXBibVZjYmlBZ0lDQWdJQ0FnSjFNbk9pQW5JMFpCT1RZd01DY3NJQzh2SUhObGNpd2djMlZ5YVc1bFhHNGdJQ0FnSUNBZ0lDZFVKem9nSnlOR1FUazJNREFuTENBdkx5QjBhSElzSUhSb2NtVnZibWx1WlZ4dUlDQWdJQ0FnSUNBblJpYzZJQ2NqTXpJek1rRkJKeXdnTHk4Z2NHaGxMQ0J3YUdWdWVXeGhiR0Z1YVc1bFhHNGdJQ0FnSUNBZ0lDZFpKem9nSnlNek1qTXlRVUVuTENBdkx5QjBlWElzSUhSNWNtOXphVzVsWEc0Z0lDQWdJQ0FnSUNkT0p6b2dKeU13TUVSRFJFTW5MQ0F2THlCaGMyNHNJR0Z6Y0dGeVlXZHBibVZjYmlBZ0lDQWdJQ0FnSjFFbk9pQW5JekF3UkVORVF5Y3NJQzh2SUdkc2Jpd2daMngxZEdGdGFXNWxYRzRnSUNBZ0lDQWdJQ2RISnpvZ0p5TkZRa1ZDUlVJbkxDQXZMeUJuYkhrc0lHZHNlV05wYm1WY2JpQWdJQ0FnSUNBZ0owd25PaUFuSXpCR09ESXdSaWNzSUM4dklHeGxkU3dnYkdWMVkybHVaVnh1SUNBZ0lDQWdJQ0FuVmljNklDY2pNRVk0TWpCR0p5d2dMeThnZG1Gc0xDQjJZV3hwYm1WY2JpQWdJQ0FnSUNBZ0owa25PaUFuSXpCR09ESXdSaWNzSUM4dklHbHNaU3dnYVhOdmJHVjFZMmx1WlZ4dUlDQWdJQ0FnSUNBblFTYzZJQ2NqUXpoRE9FTTRKeXdnTHk4Z1lXeGhMQ0JoYkdGdWFXNWxYRzRnSUNBZ0lDQWdJQ2RYSnpvZ0p5TkNORFZCUWpRbkxDQXZMeUIwY25Bc0lIUnllWEIwYjNCb1lXNWNiaUFnSUNBZ0lDQWdKMGduT2lBbkl6Z3lPREpFTWljc0lDOHZJR2hwY3l3Z2FHbHpkR2xrYVc1bFhHNGdJQ0FnSUNBZ0lDZFFKem9nSnlORVF6azJPREluTENBdkx5QndjbThzSUhCeWIyeHBibVZjYmlBZ0lDQWdJQ0FnSjI5MGFHVnljeWM2SUNjalFrVkJNRFpGSnl4Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1eVlYTk5iMnc3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYjNabGNuSnBaR1VnWjJWMEtHMDZJSE4wY21sdVp5azZJSE4wY21sdVp5QjdYRzRnSUNBZ1kyOXVjM1FnY21WelRTQTlJRzBnYVc0Z1FXMXBibTloWTJsa2MxQmhiR1YwZEdWekxtRmhVM2x1YjI1NWJYTWdQeUJCYldsdWIyRmphV1J6VUdGc1pYUjBaWE11WVdGVGVXNXZibmx0YzF0dFhTQTZJRzA3WEc0Z0lDQWdZMjl1YzNRZ2NtVnpJRDBnYzNWd1pYSXVaMlYwS0hKbGMwMHBPMXh1SUNBZ0lISmxkSFZ5YmlCeVpYTTdYRzRnSUgxY2JseHVJQ0F2S2lvZ1QyNXNlU0J6YjIxbElHOW1JSFJvWlNCemVXNXZibmx0Y3k0Z1ZHaGxjMlVnZDJWeVpTQnZZblJoYVc1bFpDQm1jbTl0SUhSb1pTQmpiSFZ6ZEdWeVpXUWdiMnhwWjI5d1pYQjBhV1JsSUdSaGRHRnpaWFF1SUNvdlhHNGdJSEJ5YVhaaGRHVWdjM1JoZEdsaklHRmhVM2x1YjI1NWJYTTZJSHNnVzI1aGJXVTZJSE4wY21sdVoxMDZJSE4wY21sdVp5QjlJRDBnZTF4dUlDQWdJQ2ROWlU1c1pTYzZJQ2RNSnl3Z0x5OGdUbXhsSUMwZ2JtOXliR1YxWTJsdVpWeHVJQ0FnSUNkTlpVRW5PaUFuUVNjc1hHNGdJQ0FnSjAxbFJ5YzZJQ2RISnl4Y2JpQWdJQ0FuVFdWR0p6b2dKMFluTEZ4dUlDQjlPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nUVcxcGJtOWhZMmxrY3lCN1hHNGdJSE4wWVhScFl5QnlaV0ZrYjI1c2VTQlRaVzFVZVhCbE9pQnpkSEpwYm1jZ1BTQW5RVzFwYm05aFkybGtjeWM3WEc1Y2JpQWdjM1JoZEdsaklISmxZV1J2Ym14NUlGTmxiVlI1Y0dWTmRXeDBhWEJzWlVGc2FXZHViV1Z1ZERvZ2MzUnlhVzVuSUQwZ0owRnRhVzV2WVdOcFpITk5kV3gwYVhCc1pVRnNhV2R1YldWdWRDYzdYRzVjYmlBZ2MzUmhkR2xqSUhWdVpHVm1hVzVsWkVOdmJHOXlJRDBnSjNKbllpZ3hNREFzTVRBd0xERXdNQ2tuTzF4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1RtRnRaWE02SUZOMGNtbHVaMFJwWTNScGIyNWhjbmtnUFNCN1hHNGdJQ0FnSjBjbk9pQW5SMng1WTJsdVpTY3NYRzRnSUNBZ0owd25PaUFuVEdWMVkybHVaU2NzWEc0Z0lDQWdKMWtuT2lBblZIbHliM05wYm1VbkxGeHVJQ0FnSUNkVEp6b2dKMU5sY21sdVpTY3NYRzRnSUNBZ0owVW5PaUFuUjJ4MWRHRnRhV01nWVdOcFpDY3NYRzRnSUNBZ0oxRW5PaUFuUjJ4MWRHRnRhVzVsSnl4Y2JpQWdJQ0FuUkNjNklDZEJjM0JoY25ScFl5QmhZMmxrSnl4Y2JpQWdJQ0FuVGljNklDZEJjM0JoY21GbmFXNWxKeXhjYmlBZ0lDQW5SaWM2SUNkUWFHVnVlV3hoYkdGdWFXNWxKeXhjYmlBZ0lDQW5RU2M2SUNkQmJHRnVhVzVsSnl4Y2JpQWdJQ0FuU3ljNklDZE1lWE5wYm1VbkxGeHVJQ0FnSUNkU0p6b2dKMEZ5WjJsdWFXNWxKeXhjYmlBZ0lDQW5TQ2M2SUNkSWFYTjBhV1JwYm1VbkxGeHVJQ0FnSUNkREp6b2dKME41YzNSbGFXNWxKeXhjYmlBZ0lDQW5WaWM2SUNkV1lXeHBibVVuTEZ4dUlDQWdJQ2RRSnpvZ0oxQnliMnhwYm1VbkxGeHVJQ0FnSUNkWEp6b2dKMVJ5ZVhCMGIzQm9ZVzRuTEZ4dUlDQWdJQ2RKSnpvZ0owbHpiMnhsZFdOcGJtVW5MRnh1SUNBZ0lDZE5Kem9nSjAxbGRHaHBiMjVwYm1VbkxGeHVJQ0FnSUNkVUp6b2dKMVJvY21WdmJtbHVaU2NzWEc0Z0lIMDdYRzVjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJCUVZOdGFXeGxjem9nVTNSeWFXNW5SR2xqZEdsdmJtRnllU0E5SUh0Y2JpQWdJQ0FuUnljNklDZE9RME1vUFU4cFR5Y3NYRzRnSUNBZ0owd25PaUFuVGx0RFFFaGRLRU5ES0VNcFF5bERLRDFQS1U4bkxGeHVJQ0FnSUNkWkp6b2dKMDVES0VORE1UMURRejFES0U4cFF6MURNU2xES0QxUEtVOG5MRnh1SUNBZ0lDZFRKem9nSjA1REtFTlBLVU1vUFU4cFR5Y3NYRzRnSUNBZ0owVW5PaUFuVGx0RFFFQklYU2hEUTBNb1R5azlUeWxES0QxUEtVOG5MRnh1SUNBZ0lDZFJKem9nSjA1YlEwQkFTRjBvUTBOREtFNHBQVThwUXlnOVR5bFBKeXhjYmlBZ0lDQW5SQ2M2SUNkT1cwTkFRRWhkS0VOREtFOHBQVThwUXlnOVR5bFBKeXhjYmlBZ0lDQW5UaWM2SUNkT1cwTkFRRWhkS0VOREtFNHBQVThwUXlnOVR5bFBKeXhjYmlBZ0lDQW5SaWM2SUNkT1F5aERRekU5UTBNOVEwTTlRekVwUXlnOVR5bFBKeXhjYmlBZ0lDQW5RU2M2SUNkT1cwTkFTRjBvUXlsREtEMVBLVThuTEZ4dUlDQWdJQ2RMSnpvZ0owNURLRU5EUTBOT0tVTW9QVThwVHljc1hHNGdJQ0FnSjFJbk9pQW5UbHREUUVoZEtFTkRRMDVES0QxT0tVTXBReWc5VHlsUEp5eGNiaUFnSUNBblNDYzZJQ2RPUXloRFF6RTlRMDQ5UTF0T1hURXBReWc5VHlsUEp5eGNiaUFnSUNBblF5YzZJQ2RPVzBOQVFFaGRLRU5US1VNb1BVOHBUeWNzWEc0Z0lDQWdKMVluT2lBblRrTW9ReWhES1VNcFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVUNjNklDZE9LRU5EUXpFcFF6RkRLRDFQS1U4bkxGeHVJQ0FnSUNkWEp6b2dKMDViUTBCQVNGMG9RMk14WXpKalkyTmpZekp1S0Z0SVhTbGpNU2xES0QxUEtVOG5MRnh1SUNBZ0lDZEpKem9nSjA1YlEwQklYU2hiUTBCSVhTaERLVU5ES1VNb1BVOHBUeWNzWEc0Z0lDQWdKMDBuT2lBblRrTW9RME5UUXlsREtEMVBLVThuTEZ4dUlDQWdJQ2RVSnpvZ0owNURLRU1vVHlsREtVTW9QVThwVHljc1hHNGdJSDA3WEc1Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCQlFWTnRhV3hsYzFSeWRXNWpZWFJsWkRvZ1UzUnlhVzVuUkdsamRHbHZibUZ5ZVNBOUlIdGNiaUFnSUNBblJ5YzZJQ2NxUXlvbkxGeHVJQ0FnSUNkTUp6b2dKME5ES0VNcFExdERRRWhkS0NvcEtpY3NYRzRnSUNBZ0oxa25PaUFuUXpFOVEwTW9QVU5EUFVNeFEwTW9LaWtxS1U4bkxGeHVJQ0FnSUNkVEp6b2dKMDlEUXlncUtVTXFKeXhjYmlBZ0lDQW5SU2M2SUNjcVcwTkFRRWhkS0VORFF5aFBLVDFQS1NvbkxGeHVJQ0FnSUNkUkp6b2dKeXBPVzBOQVFFaGRLRU5EUXloT0tUMVBLU29uTEZ4dUlDQWdJQ2RFSnpvZ0p5cGJRMEJBU0Ywb1EwTW9UeWs5VHlrcUp5eGNiaUFnSUNBblRpYzZJQ2NxVzBOQVFFaGRLRU5ES0U0cFBVOHBLaWNzWEc0Z0lDQWdKMFluT2lBblF6RTlRME05UXloRFBVTXhLVU5ES0NvcEtpY3NYRzRnSUNBZ0owRW5PaUFuUTF0RFFFaGRLQ29wS2ljc1hHNGdJQ0FnSjBzbk9pQW5ReWhEUTA0cFEwTW9LaWtxSnl4Y2JpQWdJQ0FuVWljNklDY3FXME5BU0Ywb1EwTkRUa01vUFU0cFF5a3FKeXhjYmlBZ0lDQW5TQ2M2SUNkRE1UMURLRTVEUFU0eEtVTkRLQ29wS2ljc1hHNGdJQ0FnSjBNbk9pQW5ReWhiUTBCQVNGMG9LaWtxS1ZNbkxGeHVJQ0FnSUNkV0p6b2dKME5ES0VNcFF5Z3FLU29uTEZ4dUlDQWdJQ2RRSnpvZ0owTXhRME5PS0NvcFF6RXFKeXhjYmlBZ0lDQW5WeWM2SUNjcVcwTkFRRWhkS0VOak1XTXlZMk5qWTJNeWJpaGJTRjBwWXpFcEtpY3NYRzRnSUNBZ0owa25PaUFuUTBOYlEwQklYU2hES1Z0RFFFaGRLQ29wS2ljc1hHNGdJQ0FnSjAwbk9pQW5RMU5EUTBNb0tpa3FKeXhjYmlBZ0lDQW5WQ2M2SUNkRFF5aFBLVU1vS2lrcUp5eGNiaUFnZlR0Y2JseHVJQ0F2S2lvZ1ZFOUVUem9nUm5Wc2JEOWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1FVRkdkV3hzVG1GdFpYTTZJRk4wY21sdVowUnBZM1JwYjI1aGNua2dQU0I3WEc0Z0lDQWdKMEZzWVNjNklDZEJKeXhjYmlBZ0lDQW5RWEpuSnpvZ0oxSW5MRnh1SUNBZ0lDZEJjMjRuT2lBblRpY3NYRzRnSUNBZ0owRnpjQ2M2SUNkRUp5eGNiaUFnSUNBblEzbHpKem9nSjBNbkxGeHVJQ0FnSUNkSGJHNG5PaUFuVVNjc1hHNGdJQ0FnSjBkc2RTYzZJQ2RGSnl4Y2JpQWdJQ0FuUjJ4NUp6b2dKMGNuTEZ4dUlDQWdJQ2RJYVhNbk9pQW5TQ2NzWEc0Z0lDQWdKMGxzWlNjNklDZEpKeXhjYmlBZ0lDQW5UR1YxSnpvZ0owd25MRnh1SUNBZ0lDZE1lWE1uT2lBblN5Y3NYRzRnSUNBZ0owMWxkQ2M2SUNkTkp5eGNiaUFnSUNBblVHaGxKem9nSjBZbkxGeHVJQ0FnSUNkUWNtOG5PaUFuVUNjc1hHNGdJQ0FnSjFObGNpYzZJQ2RUSnl4Y2JpQWdJQ0FuVkdoeUp6b2dKMVFuTEZ4dUlDQWdJQ2RVY25Bbk9pQW5WeWNzWEc0Z0lDQWdKMVI1Y2ljNklDZFpKeXhjYmlBZ0lDQW5WbUZzSnpvZ0oxWW5MRnh1SUNCOU8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwVUdGc1pYUjBaU2h6WTJobGJXVTZJSE4wY21sdVp5QTlJQ2RuY205ckp5azZJRk5sY1ZCaGJHVjBkR1VnZTF4dUlDQWdJSE4zYVhSamFDQW9jMk5vWlcxbEtTQjdYRzRnSUNBZ1kyRnpaU0FuWjNKdmF5YzZYRzRnSUNBZ0lDQnlaWFIxY200Z1FXMXBibTloWTJsa2MxQmhiR1YwZEdWekxrZHliMnRIY205MWNITTdYRzRnSUNBZ1kyRnpaU0FuYkdWemF5YzZYRzRnSUNBZ0lDQnlaWFIxY200Z1FXMXBibTloWTJsa2MxQmhiR1YwZEdWekxreGxjMnM3WEc0Z0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1EyaGxiVkJoYkdWMGRHVTZJSE5qYUdWdFpTQmNYR0FrZTNOamFHVnRaWDFjWEdBZ1pHOWxjeUJ1YjNRZ1pYaHBjM1JnS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1Y3lCa2FYWnBaR1ZrSUdGdGFXNXZJR0ZqYVdRZ2QybDBhQ0JwZEhNZ1kyOXVkR1Z1ZENCcGJpQjBhR1VnWW5KaFkydGxkQ3dnYVdZZ2RHaGxJR052Ym5SbGJuUWdhWE1nYm5WdFltVnlMQ0IwYUdWdUlHbDBjeUJ2YldsMGRHVmtYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0JqSUhKaGR5QmhiV2x1YjF4dUlDQWdLaUJBY21WMGRYSnVJSHRiYzNSeWFXNW5MQ0J6ZEhKcGJtZGRmU0J2ZFhSbGNpQmhibVFnYVc1dVpYSWdZMjl1ZEdWdWRGeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCblpYUkpibTVsY2s5MWRHVnlLR002SUhOMGNtbHVaeWs2SUZ0emRISnBibWNzSUhOMGNtbHVaMTBnZTF4dUlDQWdJR3hsZENCcGMwbHVibVZ5SUQwZ01EdGNiaUFnSUNCc1pYUWdhVzV1WlhJZ1BTQW5KenRjYmlBZ0lDQnNaWFFnYjNWMFpYSWdQU0FuSnp0Y2JseHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ1kyaGhjaUJ2WmlCaktTQjdYRzRnSUNBZ0lDQnBaaUFvWTJoaGNpQTlQU0FuS0NjcFhHNGdJQ0FnSUNBZ0lHbHpTVzV1WlhJckt6dGNiaUFnSUNBZ0lHVnNjMlVnYVdZZ0tHTm9ZWElnUFQwZ0p5a25LVnh1SUNBZ0lDQWdJQ0JwYzBsdWJtVnlMUzA3WEc0Z0lDQWdJQ0JsYkhObElHbG1JQ2hwYzBsdWJtVnlLVnh1SUNBZ0lDQWdJQ0JwYm01bGNpQXJQU0JqYUdGeU8xeHVJQ0FnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdJQ0J2ZFhSbGNpQXJQU0JqYUdGeU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUFoYVhOT1lVNG9jR0Z5YzJWSmJuUW9hVzV1WlhJcEtTQS9JRnR2ZFhSbGNpd2dKeWRkSURvZ1cyOTFkR1Z5TENCcGJtNWxjbDA3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZEVOdmJHOXlRVUZRYVhadmRDaHRiMjV2YldWeU9pQnpkSEpwYm1jZ1BTQW5KeXdnYzJOb1pXMWxPaUFuWjNKdmF5Y2dQU0FuWjNKdmF5Y3BPaUJiYzNSeWFXNW5MQ0J6ZEhKcGJtY3NJSE4wY21sdVp5d2diblZ0WW1WeVhTQjdYRzRnSUNBZ0x5OWpiMjV6ZENCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObElEMGdRVUZRWVd4bGRIUmxjeTVIY205clIzSnZkWEJ6S0NrN1hHNGdJQ0FnWTI5dWMzUWdZMmhsYlZCaGJHVjBkR1ZKYm5OMFlXNWpaU0E5SUhSb2FYTXVaMlYwVUdGc1pYUjBaU2h6WTJobGJXVXBPMXh1SUNBZ0lHeGxkQ0JiYjNWMFpYSk5iMjV2YldWeUxDQnBibTVsY2sxdmJtOXRaWEpkSUQwZ2RHaHBjeTVuWlhSSmJtNWxjazkxZEdWeUtHMXZibTl0WlhJcE8xeHVJQ0FnSUc5MWRHVnlUVzl1YjIxbGNpQTlJQ2h2ZFhSbGNrMXZibTl0WlhJdWJHVnVaM1JvSUQ0Z05pQS9JR0FrZTI5MWRHVnlUVzl1YjIxbGNpNXpiR2xqWlNnd0xDQXpLWDB1TGk1Z0lEb2diM1YwWlhKTmIyNXZiV1Z5S1R0Y2JpQWdJQ0JwYm01bGNrMXZibTl0WlhJZ1BTQW9hVzV1WlhKTmIyNXZiV1Z5TG14bGJtZDBhQ0ErSURZZ1B5QmdKSHRwYm01bGNrMXZibTl0WlhJdWMyeHBZMlVvTUN3Z015bDlMaTR1WUNBNklHbHVibVZ5VFc5dWIyMWxjaWs3WEc1Y2JpQWdJQ0JwWmlBb2JXOXViMjFsY2k1c1pXNW5kR2dnUFQwZ01TQjhmQ0J0YjI1dmJXVnlXekZkSUQwOUlDY29KeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdZVzFwYm04Z1BTQnRiMjV2YldWeVd6QmRQeTUwYjFWd2NHVnlRMkZ6WlNncElUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCaGJXbHVieUJwYmlCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObElEOWNiaUFnSUNBZ0lDQWdXMk5vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlV1WjJWMEtHRnRhVzV2S1N3Z1lXMXBibThzSUdsdWJtVnlUVzl1YjIxbGNpd2dNVjBnT2x4dUlDQWdJQ0FnSUNCYmRHaHBjeTUxYm1SbFptbHVaV1JEYjJ4dmNpd2diM1YwWlhKTmIyNXZiV1Z5TENCcGJtNWxjazF2Ym05dFpYSXNJREZkTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNodGIyNXZiV1Z5V3pCZElEMDlJQ2RrSnlBbUppQnRiMjV2YldWeVd6RmRJU0JwYmlCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObEtTQjdYRzRnSUNBZ0lDQnBaaUFvYlc5dWIyMWxjaTVzWlc1bmRHZ2dQVDBnTWlCOGZDQnRiMjV2YldWeVd6SmRJRDA5SUNjb0p5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQmhiV2x1YnlBOUlHMXZibTl0WlhKYk1WMC9MblJ2VlhCd1pYSkRZWE5sS0NraE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1lXMXBibThnYVc0Z1kyaGxiVkJoYkdWMGRHVkpibk4wWVc1alpTQS9YRzRnSUNBZ0lDQWdJQ0FnVzJOb1pXMVFZV3hsZEhSbFNXNXpkR0Z1WTJVdVoyVjBLR0Z0YVc1dktTd2dZVzFwYm04c0lHbHVibVZ5VFc5dWIyMWxjaXdnTWwwZ09seHVJQ0FnSUNBZ0lDQWdJRnQwYUdsekxuVnVaR1ZtYVc1bFpFTnZiRzl5TENCdmRYUmxjazF2Ym05dFpYSXNJR2x1Ym1WeVRXOXViMjFsY2l3Z01sMDdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLRzF2Ym05dFpYSXVjM1ZpYzNSeWFXNW5LREFzSURNcElHbHVJSFJvYVhNdVFVRkdkV3hzVG1GdFpYTXBJSHRjYmlBZ0lDQWdJR2xtSUNodGIyNXZiV1Z5TG14bGJtZDBhQ0E5UFNBeklIeDhJRzF2Ym05dFpYSmJNMTBnUFQwZ0p5Z25LU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR0Z0YVc1dklEMGdkR2hwY3k1QlFVWjFiR3hPWVcxbGMxdHRiMjV2YldWeUxuTjFZbk4wY21sdVp5Z3dMQ0F6S1YwN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCaGJXbHVieUJwYmlCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObElEOWNiaUFnSUNBZ0lDQWdJQ0JiWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlM1blpYUW9ZVzFwYm04cExDQmhiV2x1Ynl3Z2FXNXVaWEpOYjI1dmJXVnlMQ0F6WFNBNlhHNGdJQ0FnSUNBZ0lDQWdXM1JvYVhNdWRXNWtaV1pwYm1Wa1EyOXNiM0lzSUc5MWRHVnlUVzl1YjIxbGNpd2dhVzV1WlhKTmIyNXZiV1Z5TENBelhUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9iVzl1YjIxbGNsc3dYVDh1ZEc5TWIzZGxja05oYzJVb0tTQTlQU0J0YjI1dmJXVnlXekJkS1NCN1hHNGdJQ0FnSUNCcFppQW9iVzl1YjIxbGNpNXpkV0p6ZEhKcGJtY29NU3dnTXlrZ2FXNGdkR2hwY3k1QlFVWjFiR3hPWVcxbGN5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2JXOXViMjFsY2k1c1pXNW5kR2dnUFQwZ05DQjhmQ0J0YjI1dmJXVnlXelJkSUQwOUlDY29KeWtnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUdGdGFXNXZJRDBnZEdocGN5NUJRVVoxYkd4T1lXMWxjMXR0YjI1dmJXVnlMbk4xWW5OMGNtbHVaeWd4TENBektWMDdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR0Z0YVc1dklHbHVJR05vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlVnUDF4dUlDQWdJQ0FnSUNBZ0lDQWdXMk5vWlcxUVlXeGxkSFJsU1c1emRHRnVZMlV1WjJWMEtHRnRhVzV2S1N3Z1lXMXBibThzSUdsdWJtVnlUVzl1YjIxbGNpd2dORjBnT2x4dUlDQWdJQ0FnSUNBZ0lDQWdXM1JvYVhNdWRXNWtaV1pwYm1Wa1EyOXNiM0lzSUc5MWRHVnlUVzl1YjIxbGNpd2dhVzV1WlhKTmIyNXZiV1Z5TENBMFhUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCYmRHaHBjeTUxYm1SbFptbHVaV1JEYjJ4dmNpd2diM1YwWlhKTmIyNXZiV1Z5TENCcGJtNWxjazF2Ym05dFpYSXNJREJkTzF4dUlDQjlYRzU5WEc0aVhYMD0iLCJpbXBvcnQgeyBTZXFQYWxldHRlQmFzZSB9IGZyb20gJy4vc2VxLXBhbGV0dGVzJztcbmV4cG9ydCBjbGFzcyBOdWNsZW90aWRlc1BhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgQ2hyb21hdG9ncmFtKCkge1xuICAgICAgICBpZiAodGhpcy5jaHJvbWF0b2dyYW0gPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgdGhpcy5jaHJvbWF0b2dyYW0gPSBuZXcgTnVjbGVvdGlkZXNQYWxldHRlcyh7XG4gICAgICAgICAgICAgICAgJ0EnOiAnZ3JlZW4nLFxuICAgICAgICAgICAgICAgICdDJzogJ2JsdWUnLFxuICAgICAgICAgICAgICAgICdHJzogJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICAnVCc6ICdyZWQnLFxuICAgICAgICAgICAgICAgICdVJzogJ3JlZCcsXG4gICAgICAgICAgICAgICAgJ290aGVycyc6ICdncmF5JyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNocm9tYXRvZ3JhbTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgTnVjbGVvdGlkZXMge1xufVxuTnVjbGVvdGlkZXMuU2VtVHlwZSA9ICdOdWNsZW90aWRlcyc7XG5OdWNsZW90aWRlcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQgPSAnTnVjbGVvdGlkZXNNdWx0aXBsZUFsaWdubWVudCc7XG5OdWNsZW90aWRlcy5OYW1lcyA9IHtcbiAgICAnQSc6ICdBZGVuaW5lJyxcbiAgICAnQyc6ICdDeXRvc2luZScsXG4gICAgJ0cnOiAnR3VhbmluZScsXG4gICAgJ1QnOiAnVGh5bWluZScsXG4gICAgJ1UnOiAnVXJhY2lsJyxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liblZqYkdWdmRHbGtaWE11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SnVkV05zWlc5MGFXUmxjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGTFFTeFBRVUZQTEVWQlFXRXNZMEZCWXl4RlFVRkRMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZGTVVRc1RVRkJUU3hQUVVGUExHMUNRVUZ2UWl4VFFVRlJMR05CUVdNN1NVRkhPVU1zVFVGQlRTeExRVUZMTEZsQlFWazdVVUZETlVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldTeExRVUZMTEV0QlFVc3NRMEZCUXl4RlFVRkZPMWxCUTJoRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NTVUZCU1N4dFFrRkJiVUlzUTBGQlF6dG5Ra0ZETVVNc1IwRkJSeXhGUVVGRkxFOUJRVTg3WjBKQlExb3NSMEZCUnl4RlFVRkZMRTFCUVUwN1owSkJRMWdzUjBGQlJ5eEZRVUZGTEU5QlFVODdaMEpCUTFvc1IwRkJSeXhGUVVGRkxFdEJRVXM3WjBKQlExWXNSMEZCUnl4RlFVRkZMRXRCUVVzN1owSkJRMVlzVVVGQlVTeEZRVUZGTEUxQlFVMDdZVUZEYWtJc1EwRkJReXhEUVVGRE8xTkJRMG83VVVGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1NVRkRNMElzUTBGQlF6dERRVU5HTzBGQlJVUXNUVUZCVFN4UFFVRlBMRmRCUVZjN08wRkJRMDRzYlVKQlFVOHNSMEZCVnl4aFFVRmhMRU5CUVVNN1FVRkZhRU1zYjBOQlFYZENMRWRCUVZjc09FSkJRVGhDTEVOQlFVTTdRVUZGY0VVc2FVSkJRVXNzUjBGQmNVSTdTVUZEZEVNc1IwRkJSeXhGUVVGRkxGTkJRVk03U1VGRFpDeEhRVUZITEVWQlFVVXNWVUZCVlR0SlFVTm1MRWRCUVVjc1JVRkJSU3hUUVVGVE8wbEJRMlFzUjBGQlJ5eEZRVUZGTEZOQlFWTTdTVUZEWkN4SFFVRkhMRVZCUVVVc1VVRkJVVHREUVVOa0xFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklIVnBJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzkxYVNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJFUnlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlpHY25PMXh1WEc1cGJYQnZjblFnZTFOMGNtbHVaMFJwWTNScGIyNWhjbmw5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN1UyVnhVR0ZzWlhSMFpTd2dVMlZ4VUdGc1pYUjBaVUpoYzJWOUlHWnliMjBnSnk0dmMyVnhMWEJoYkdWMGRHVnpKenRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRTUxWTJ4bGIzUnBaR1Z6VUdGc1pYUjBaWE1nWlhoMFpXNWtjeUJUWlhGUVlXeGxkSFJsUW1GelpTQjdYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR05vY205dFlYUnZaM0poYlRvZ1UyVnhVR0ZzWlhSMFpUdGNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZENCRGFISnZiV0YwYjJkeVlXMG9LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WTJoeWIyMWhkRzluY21GdElEMDlQU0IyYjJsa0lEQXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVkyaHliMjFoZEc5bmNtRnRJRDBnYm1WM0lFNTFZMnhsYjNScFpHVnpVR0ZzWlhSMFpYTW9lMXh1SUNBZ0lDQWdJQ0FuUVNjNklDZG5jbVZsYmljc1hHNGdJQ0FnSUNBZ0lDZERKem9nSjJKc2RXVW5MRnh1SUNBZ0lDQWdJQ0FuUnljNklDZGliR0ZqYXljc0lDOHZJRzl5WVc1blpTQS9YRzRnSUNBZ0lDQWdJQ2RVSnpvZ0ozSmxaQ2NzWEc0Z0lDQWdJQ0FnSUNkVkp6b2dKM0psWkNjc1hHNGdJQ0FnSUNBZ0lDZHZkR2hsY25Nbk9pQW5aM0poZVNjc1hHNGdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyaHliMjFoZEc5bmNtRnRPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5Qk9kV05zWlc5MGFXUmxjeUI3WEc0Z0lITjBZWFJwWXlCeVpXRmtiMjVzZVNCVFpXMVVlWEJsT2lCemRISnBibWNnUFNBblRuVmpiR1Z2ZEdsa1pYTW5PMXh1WEc0Z0lITjBZWFJwWXlCeVpXRmtiMjVzZVNCVFpXMVVlWEJsVFhWc2RHbHdiR1ZCYkdsbmJtMWxiblE2SUhOMGNtbHVaeUE5SUNkT2RXTnNaVzkwYVdSbGMwMTFiSFJwY0d4bFFXeHBaMjV0Wlc1MEp6dGNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJRTVoYldWek9pQlRkSEpwYm1kRWFXTjBhVzl1WVhKNUlEMGdlMXh1SUNBZ0lDZEJKem9nSjBGa1pXNXBibVVuTEZ4dUlDQWdJQ2RESnpvZ0owTjVkRzl6YVc1bEp5eGNiaUFnSUNBblJ5YzZJQ2RIZFdGdWFXNWxKeXhjYmlBZ0lDQW5WQ2M2SUNkVWFIbHRhVzVsSnl4Y2JpQWdJQ0FuVlNjNklDZFZjbUZqYVd3bkxGeHVJQ0I5TzF4dWZWeHVJbDE5IiwiZXhwb3J0IGNsYXNzIFNlcVBhbGV0dGVCYXNlIHtcbiAgICBzdGF0aWMgbWFrZVBhbGV0dGUoZHQsIHNpbXBsaWZpZWQgPSBmYWxzZSwgUGFsZXR0ZVR5cGUgPSBTZXFQYWxldHRlQmFzZSkge1xuICAgICAgICBjb25zdCBwYWxldHRlID0ge307XG4gICAgICAgIGR0LmZvckVhY2goKGNwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvYmpMaXN0ID0gY3BbMF07XG4gICAgICAgICAgICBjb25zdCBjb2xvdXIgPSBjcFsxXTtcbiAgICAgICAgICAgIG9iakxpc3QuZm9yRWFjaCgob2JqLCBpbmQpID0+IHtcbiAgICAgICAgICAgICAgICBwYWxldHRlW29ial0gPSB0aGlzLmNvbG91clBhbGV0dGVbY29sb3VyXVtzaW1wbGlmaWVkID8gMCA6IGluZF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgUGFsZXR0ZVR5cGUocGFsZXR0ZSk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHBhbGV0dGUpIHtcbiAgICAgICAgdGhpcy5fcGFsZXR0ZSA9IHBhbGV0dGU7XG4gICAgfVxuICAgIGdldChtKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWxldHRlW21dO1xuICAgIH1cbn1cblNlcVBhbGV0dGVCYXNlLnVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuLyoqIFBhbGV0dGUgd2l0aCBzaGFkZXMgb2YgcHJpbWFyeSBjb2xvcnMgKi9cblNlcVBhbGV0dGVCYXNlLmNvbG91clBhbGV0dGUgPSB7XG4gICAgJ29yYW5nZSc6IFsncmdiKDI1NSwxODcsMTIwKScsICdyZ2IoMjQ1LDE2NywxMDApJywgJ3JnYigyMzUsMTM3LDcwKScsICdyZ2IoMjA1LCAxMTEsIDcxKSddLFxuICAgICdhbGxfZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYig3NCwxNjAsNzQpJywgJ3JnYigyMywxMDMsNTcpJywgJ3JnYigzMCwxMTAsOTYpJywgJ3JnYig2MCwxMzEsOTUpJyxcbiAgICAgICAgJ3JnYigyNCwxMTAsNzkpJywgJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDE4MiwgMjIzLCAxMzgpJywgJ3JnYigxNTIsIDE5MywgMTM4KSddLFxuICAgICdhbGxfYmx1ZSc6IFsncmdiKDMxLDExOSwxODApJywgJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTIyLCAxMDIsIDE4OSknLCAncmdiKDE1OCwyMTgsMjI5KScsICdyZ2IoMTQxLCAxMjQsIDIxNyknLFxuICAgICAgICAncmdiKDMxLCAxMjAsIDE1MCknXSxcbiAgICAnbWFnZW50YSc6IFsncmdiKDE2MiwxMDYsMTkyKScsICdyZ2IoMTk3LDE2NSwyMjQpJywgJ3JnYigyMDgsMTEzLDIxOCknXSxcbiAgICAncmVkJzogWydyZ2IoMjE0LDM5LDQwKScsICdyZ2IoMjU1LDE1MiwxNTApJ10sXG4gICAgJ3N0X2JsdWUnOiBbJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigzMSwxMTksMTgwKSddLFxuICAgICdkYXJrX2JsdWUnOiBbJ3JnYigzMSwxMTksMTgwKScsICdyZ2IoMzEsIDEyMCwgMTUwKSddLFxuICAgICdsaWdodF9ibHVlJzogWydyZ2IoMjMsMTkwLDIwNyknLCAncmdiKDE1OCwyMTgsMjI5KScsICdyZ2IoMTA4LCAyMTgsIDIyOSknLCAncmdiKDIzLDE5MCwyMjcpJ10sXG4gICAgJ2xpbGFjX2JsdWUnOiBbJ3JnYigxMjQsMTAyLDIxMSknLCAncmdiKDE0OSwxMzQsMjE3KScsICdyZ2IoOTcsIDgxLCAxNTApJ10sXG4gICAgJ2RhcmtfZ3JlZW4nOiBbJ3JnYigyMywxMDMsNTcpJywgJ3JnYigzMCwxMTAsOTYpJywgJ3JnYig2MCwxMzEsOTUpJywgJ3JnYigyNCwxMTAsNzkpJ10sXG4gICAgJ2dyZWVuJzogWydyZ2IoNDQsMTYwLDQ0KScsICdyZ2IoNzQsMTYwLDc0KSddLFxuICAgICdsaWdodF9ncmVlbic6IFsncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMTgyLCAyMjMsIDEzOCknLCAncmdiKDE1MiwgMTkzLCAxMzgpJ10sXG4gICAgJ3N0X2dyZWVuJzogWydyZ2IoNDQsMTYwLDQ0KScsICdyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigzOSwgMTc0LCA5NiknLCAncmdiKDc0LDE2MCw3NCknXSxcbiAgICAncGluayc6IFsncmdiKDI0NywxODIsMjEwKSddLFxuICAgICdicm93bic6IFsncmdiKDE0MCw4Niw3NSknLCAncmdiKDEwMiwgNjIsIDU0KSddLFxuICAgICdncmF5JzogWydyZ2IoMTI3LDEyNywxMjcpJywgJ3JnYigxOTksMTk5LDE5OSknLCAncmdiKDE5NiwxNTYsMTQ4KScsICdyZ2IoMjIyLCAyMjIsIDE4MCknXSxcbiAgICAneWVsbG93JzogWydyZ2IoMTg4LDE4OSwzNCknXSxcbiAgICAnd2hpdGUnOiBbJ3JnYigyMzAsMjMwLDIzMCknXSxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlZ4TFhCaGJHVjBkR1Z6TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljMlZ4TFhCaGJHVjBkR1Z6TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFXbENRU3hOUVVGTkxFOUJRVThzWTBGQll6dEpRVEpDWml4TlFVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFVkJRWGRDTEVWQlEyNUVMRlZCUVZVc1IwRkJSeXhMUVVGTExFVkJRVVVzWTBGQmNVTXNZMEZCWXp0UlFVVjJSU3hOUVVGTkxFOUJRVThzUjBGQk9FSXNSVUZCUlN4RFFVRkRPMUZCUXpsRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSVHRaUVVOb1FpeE5RVUZOTEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGRFSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzSkNMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVN1owSkJRek5DTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOc1JTeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTk1MRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMGdzVDBGQlR5eEpRVUZKTEZkQlFWY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVOc1F5eERRVUZETzBsQlNVUXNXVUZCV1N4UFFVRm5RenRSUVVNeFF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRTlCUVU4c1EwRkJRenRKUVVNeFFpeERRVUZETzBsQlJVMHNSMEZCUnl4RFFVRkRMRU5CUVZNN1VVRkRiRUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRekZDTEVOQlFVTTdPMEZCYUVSaExEWkNRVUZqTEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU03UVVGRmJFUXNORU5CUVRSRE8wRkJRemxDTERSQ1FVRmhMRWRCUVdkRE8wbEJRM3BFTEZGQlFWRXNSVUZCUlN4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEd0Q1FVRnJRaXhGUVVGRkxHbENRVUZwUWl4RlFVRkZMRzFDUVVGdFFpeERRVUZETzBsQlF6RkdMRmRCUVZjc1JVRkJSU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMR2RDUVVGblFpeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxHZENRVUZuUWl4RlFVRkZMR2RDUVVGblFqdFJRVU53Unl4blFrRkJaMElzUlVGQlJTeHJRa0ZCYTBJc1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN4dlFrRkJiMElzUTBGQlF6dEpRVU51Uml4VlFVRlZMRVZCUVVVc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4cFFrRkJhVUlzUlVGQlJTeHZRa0ZCYjBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4dlFrRkJiMEk3VVVGREwwY3NiVUpCUVcxQ0xFTkJRVU03U1VGRGRFSXNVMEZCVXl4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRU5CUVVNN1NVRkRka1VzUzBGQlN5eEZRVUZGTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzYTBKQlFXdENMRU5CUVVNN1NVRkROME1zVTBGQlV5eEZRVUZGTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2FVSkJRV2xDTEVOQlFVTTdTVUZEY2tVc1YwRkJWeXhGUVVGRkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTTdTVUZEY2tRc1dVRkJXU3hGUVVGRkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNiMEpCUVc5Q0xFVkJRVVVzYVVKQlFXbENMRU5CUVVNN1NVRkRPVVlzV1VGQldTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTTdTVUZETVVVc1dVRkJXU3hGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRU5CUVVNN1NVRkRkRVlzVDBGQlR5eEZRVUZGTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRU5CUVVNN1NVRkROME1zWVVGQllTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYjBKQlFXOUNMRVZCUVVVc2IwSkJRVzlDTEVOQlFVTTdTVUZETDBVc1ZVRkJWU3hGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzWjBKQlFXZENMRU5CUVVNN1NVRkRlRVlzVFVGQlRTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU03U1VGRE5VSXNUMEZCVHl4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU03U1VGREwwTXNUVUZCVFN4RlFVRkZMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2IwSkJRVzlDTEVOQlFVTTdTVUZETVVZc1VVRkJVU3hGUVVGRkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNN1NVRkROMElzVDBGQlR5eEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU03UTBGRE9VSXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR2R5YjJzZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyZHliMnNuTzF4dWFXMXdiM0owSUNvZ1lYTWdkV2tnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDNWcEp6dGNibWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1UyVnhVR0ZzWlhSMFpTQjdYRzRnSUM4dklGUm9aWEpsSUdGeVpTQjBiMjhnYlhWamFDQndjbTlpYkdWdElIZHBkR2dnYVc1a1pYaGxjaUJ3Y205d1pYSjBlU0JwYmlCMGVYQmxjMk55YVhCMExseHVJQ0F2THlBdktpcGNiaUFnTHk4Z0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHMGdUVzl1YjIxbGNpQmphR0Z5WVdOMFpYSmNiaUFnTHk4Z0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQkRiMnh2Y2x4dUlDQXZMeUFnS2k5Y2JpQWdMeThnVzIwNklITjBjbWx1WjEwNklITjBjbWx1Wnp0Y2JpQWdMeW9xSUUxdmJtOXRaWElnWTI5c2IzSmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUcwZ1RXOXViMjFsY2x4dUlDQWdLaTljYmlBZ1oyVjBLRzA2SUhOMGNtbHVaeWs2SUhOMGNtbHVaenRjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUZObGNWQmhiR1YwZEdWQ1lYTmxJR2x0Y0d4bGJXVnVkSE1nVTJWeFVHRnNaWFIwWlNCN1hHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ2RXNWtaV1pwYm1Wa1EyOXNiM0lnUFNBbmNtZGlLREV3TUN3eE1EQXNNVEF3S1NjN1hHNWNiaUFnTHlvcUlGQmhiR1YwZEdVZ2QybDBhQ0J6YUdGa1pYTWdiMllnY0hKcGJXRnllU0JqYjJ4dmNuTWdLaTljYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJqYjJ4dmRYSlFZV3hsZEhSbE9pQjdJRnRyWlhrNklITjBjbWx1WjEwNklITjBjbWx1WjF0ZElIMGdQU0I3WEc0Z0lDQWdKMjl5WVc1blpTYzZJRnNuY21kaUtESTFOU3d4T0Rjc01USXdLU2NzSUNkeVoySW9NalExTERFMk55d3hNREFwSnl3Z0ozSm5ZaWd5TXpVc01UTTNMRGN3S1Njc0lDZHlaMklvTWpBMUxDQXhNVEVzSURjeEtTZGRMRnh1SUNBZ0lDZGhiR3hmWjNKbFpXNG5PaUJiSjNKbllpZzBOQ3d4TmpBc05EUXBKeXdnSjNKbllpZzNOQ3d4TmpBc056UXBKeXdnSjNKbllpZ3lNeXd4TURNc05UY3BKeXdnSjNKbllpZ3pNQ3d4TVRBc09UWXBKeXdnSjNKbllpZzJNQ3d4TXpFc09UVXBKeXhjYmlBZ0lDQWdJQ2R5WjJJb01qUXNNVEV3TERjNUtTY3NJQ2R5WjJJb01UVXlMREl5TXl3eE16Z3BKeXdnSjNKbllpZ3hPRElzSURJeU15d2dNVE00S1Njc0lDZHlaMklvTVRVeUxDQXhPVE1zSURFek9Da25YU3hjYmlBZ0lDQW5ZV3hzWDJKc2RXVW5PaUJiSjNKbllpZ3pNU3d4TVRrc01UZ3dLU2NzSUNkeVoySW9Nak1zTVRrd0xESXdOeWtuTENBbmNtZGlLREV5TWl3Z01UQXlMQ0F4T0RrcEp5d2dKM0puWWlneE5UZ3NNakU0TERJeU9Ta25MQ0FuY21kaUtERTBNU3dnTVRJMExDQXlNVGNwSnl4Y2JpQWdJQ0FnSUNkeVoySW9NekVzSURFeU1Dd2dNVFV3S1NkZExGeHVJQ0FnSUNkdFlXZGxiblJoSnpvZ1d5ZHlaMklvTVRZeUxERXdOaXd4T1RJcEp5d2dKM0puWWlneE9UY3NNVFkxTERJeU5Da25MQ0FuY21kaUtESXdPQ3d4TVRNc01qRTRLU2RkTEZ4dUlDQWdJQ2R5WldRbk9pQmJKM0puWWlneU1UUXNNemtzTkRBcEp5d2dKM0puWWlneU5UVXNNVFV5TERFMU1Da25YU3hjYmlBZ0lDQW5jM1JmWW14MVpTYzZJRnNuY21kaUtESXpMREU1TUN3eU1EY3BKeXdnSjNKbllpZ3hOVGdzTWpFNExESXlPU2tuTENBbmNtZGlLRE14TERFeE9Td3hPREFwSjEwc1hHNGdJQ0FnSjJSaGNtdGZZbXgxWlNjNklGc25jbWRpS0RNeExERXhPU3d4T0RBcEp5d2dKM0puWWlnek1Td2dNVEl3TENBeE5UQXBKMTBzWEc0Z0lDQWdKMnhwWjJoMFgySnNkV1VuT2lCYkozSm5ZaWd5TXl3eE9UQXNNakEzS1Njc0lDZHlaMklvTVRVNExESXhPQ3d5TWprcEp5d2dKM0puWWlneE1EZ3NJREl4T0N3Z01qSTVLU2NzSUNkeVoySW9Nak1zTVRrd0xESXlOeWtuWFN4Y2JpQWdJQ0FuYkdsc1lXTmZZbXgxWlNjNklGc25jbWRpS0RFeU5Dd3hNRElzTWpFeEtTY3NJQ2R5WjJJb01UUTVMREV6TkN3eU1UY3BKeXdnSjNKbllpZzVOeXdnT0RFc0lERTFNQ2tuWFN4Y2JpQWdJQ0FuWkdGeWExOW5jbVZsYmljNklGc25jbWRpS0RJekxERXdNeXcxTnlrbkxDQW5jbWRpS0RNd0xERXhNQ3c1TmlrbkxDQW5jbWRpS0RZd0xERXpNU3c1TlNrbkxDQW5jbWRpS0RJMExERXhNQ3czT1NrblhTeGNiaUFnSUNBblozSmxaVzRuT2lCYkozSm5ZaWcwTkN3eE5qQXNORFFwSnl3Z0ozSm5ZaWczTkN3eE5qQXNOelFwSjEwc1hHNGdJQ0FnSjJ4cFoyaDBYMmR5WldWdUp6b2dXeWR5WjJJb01UVXlMREl5TXl3eE16Z3BKeXdnSjNKbllpZ3hPRElzSURJeU15d2dNVE00S1Njc0lDZHlaMklvTVRVeUxDQXhPVE1zSURFek9Da25YU3hjYmlBZ0lDQW5jM1JmWjNKbFpXNG5PaUJiSjNKbllpZzBOQ3d4TmpBc05EUXBKeXdnSjNKbllpZ3hOVElzTWpJekxERXpPQ2tuTENBbmNtZGlLRE01TENBeE56UXNJRGsyS1Njc0lDZHlaMklvTnpRc01UWXdMRGMwS1NkZExGeHVJQ0FnSUNkd2FXNXJKem9nV3lkeVoySW9NalEzTERFNE1pd3lNVEFwSjEwc1hHNGdJQ0FnSjJKeWIzZHVKem9nV3lkeVoySW9NVFF3TERnMkxEYzFLU2NzSUNkeVoySW9NVEF5TENBMk1pd2dOVFFwSjEwc1hHNGdJQ0FnSjJkeVlYa25PaUJiSjNKbllpZ3hNamNzTVRJM0xERXlOeWtuTENBbmNtZGlLREU1T1N3eE9Ua3NNVGs1S1Njc0lDZHlaMklvTVRrMkxERTFOaXd4TkRncEp5d2dKM0puWWlneU1qSXNJREl5TWl3Z01UZ3dLU2RkTEZ4dUlDQWdJQ2Q1Wld4c2IzY25PaUJiSjNKbllpZ3hPRGdzTVRnNUxETTBLU2RkTEZ4dUlDQWdJQ2QzYUdsMFpTYzZJRnNuY21kaUtESXpNQ3d5TXpBc01qTXdLU2RkTEZ4dUlDQjlPMXh1WEc0Z0lIQnliM1JsWTNSbFpDQnpkR0YwYVdNZ2JXRnJaVkJoYkdWMGRHVW9aSFE2SUZ0emRISnBibWRiWFN3Z2MzUnlhVzVuWFZ0ZExGeHVJQ0FnSUhOcGJYQnNhV1pwWldRZ1BTQm1ZV3h6WlN3Z1VHRnNaWFIwWlZSNWNHVTZJSFI1Y0dWdlppQlRaWEZRWVd4bGRIUmxRbUZ6WlNBOUlGTmxjVkJoYkdWMGRHVkNZWE5sWEc0Z0lDa2dlMXh1SUNBZ0lHTnZibk4wSUhCaGJHVjBkR1U2SUhzZ1cydGxlVG9nYzNSeWFXNW5YVG9nYzNSeWFXNW5JSDBnUFNCN2ZUdGNiaUFnSUNCa2RDNW1iM0pGWVdOb0tDaGpjQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYjJKcVRHbHpkQ0E5SUdOd1d6QmRPMXh1SUNBZ0lDQWdZMjl1YzNRZ1kyOXNiM1Z5SUQwZ1kzQmJNVjA3WEc0Z0lDQWdJQ0J2WW1wTWFYTjBMbVp2Y2tWaFkyZ29LRzlpYWl3Z2FXNWtLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lIQmhiR1YwZEdWYmIySnFYU0E5SUhSb2FYTXVZMjlzYjNWeVVHRnNaWFIwWlZ0amIyeHZkWEpkVzNOcGJYQnNhV1pwWldRZ1B5QXdJRG9nYVc1a1hUdGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lIMHBPMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dVR0ZzWlhSMFpWUjVjR1VvY0dGc1pYUjBaU2s3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUhKbFlXUnZibXg1SUY5d1lXeGxkSFJsT2lCN0lGdHRPaUJ6ZEhKcGJtZGRPaUJ6ZEhKcGJtY2dmVHRjYmx4dUlDQmpiMjV6ZEhKMVkzUnZjaWh3WVd4bGRIUmxPaUI3SUZ0dE9pQnpkSEpwYm1kZE9pQnpkSEpwYm1jZ2ZTa2dlMXh1SUNBZ0lIUm9hWE11WDNCaGJHVjBkR1VnUFNCd1lXeGxkSFJsTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDaHRPaUJ6ZEhKcGJtY3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDl3WVd4bGRIUmxXMjFkTzF4dUlDQjlYRzU5WEc0aVhYMD0iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuLyoqIG1ha2VzIHRoZSBjb2xvciBsZXNzIHdoaXRlLCBtYWtlcyB0aGUgdHJhbnNwYXJlbmN5IGVmZmVjdCBhbHdheXMgcGVyY2VwdGlibGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvciB4IGNvb3JkaW5hdGUuXG4gKiAqL1xuZnVuY3Rpb24gY29ycmVjdENvbG9yKGNvbG9yKSB7XG4gICAgaWYgKGNvbG9yID09IG51bGwpXG4gICAgICAgIHJldHVybiAncmdiKDEwMCwxMDAsMTAwKSc7XG4gICAgY29uc3QgZGdDb2xvciA9IERHLkNvbG9yLmZyb21IdG1sKGNvbG9yKTtcbiAgICBjb25zdCBnID0gREcuQ29sb3IuZyhkZ0NvbG9yKTtcbiAgICBjb25zdCByID0gREcuQ29sb3IucihkZ0NvbG9yKTtcbiAgICBjb25zdCBiID0gREcuQ29sb3IuYihkZ0NvbG9yKTtcbiAgICAvLyBjYWxjdWxhdGUgZXVjbGlkZWFuIGRpc3RhbmNlIHRvIHdoaXRlXG4gICAgY29uc3QgZGlzdFRvQmxhY2sgPSBNYXRoLnNxcnQoTWF0aC5wb3coMCAtIHIsIDIpICsgTWF0aC5wb3coMCAtIGcsIDIpICsgTWF0aC5wb3coMCAtIGIsIDIpKTtcbiAgICAvLyBub3JtYWxpemUgdmVjdG9yIHIgZyBiXG4gICAgY29uc3Qgbm9ybVIgPSByIC8gZGlzdFRvQmxhY2s7XG4gICAgY29uc3Qgbm9ybUcgPSBnIC8gZGlzdFRvQmxhY2s7XG4gICAgY29uc3Qgbm9ybUIgPSBiIC8gZGlzdFRvQmxhY2s7XG4gICAgaWYgKGRpc3RUb0JsYWNrID4gMjEwKSB7XG4gICAgICAgIHJldHVybiBgcmdiKCR7bm9ybVIgKiAyMTB9LCR7bm9ybUcgKiAyMTB9LCR7bm9ybUIgKiAyMTB9KWA7XG4gICAgfVxuICAgIHJldHVybiBERy5Db2xvci50b1JnYihkZ0NvbG9yKTtcbn1cbmV4cG9ydCBjbGFzcyBTdHJpbmdVdGlscyB7XG4gICAgc3RhdGljIGhhc2hDb2RlKHMpIHtcbiAgICAgICAgbGV0IGhhc2ggPSAwO1xuICAgICAgICBpZiAocy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm4gaGFzaDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjaHIgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICBoYXNoID0gKChoYXNoIDw8IDUpIC0gaGFzaCkgKyBjaHI7XG4gICAgICAgICAgICBoYXNoIHw9IDA7IC8vIENvbnZlcnQgdG8gMzJiaXQgaW50ZWdlclxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYXNoO1xuICAgIH1cbn1cbmltcG9ydCB7IFNlcVBhbGV0dGVCYXNlIH0gZnJvbSAnLi9zZXEtcGFsZXR0ZXMnO1xuZXhwb3J0IGNsYXNzIFVua25vd25TZXFQYWxldHRlIHtcbn1cbmV4cG9ydCBjbGFzcyBHcmF5QWxsUGFsZXR0ZSBleHRlbmRzIFVua25vd25TZXFQYWxldHRlIHtcbiAgICBnZXQobSkge1xuICAgICAgICByZXR1cm4gJyM2NjY2NjYnO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVbmtub3duQ29sb3JQYWxldHRlIGV4dGVuZHMgVW5rbm93blNlcVBhbGV0dGUge1xuICAgIHN0YXRpYyBidWlsZFBhbGV0dGUoKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdLmNvbmNhdCguLi5PYmplY3QudmFsdWVzKFNlcVBhbGV0dGVCYXNlLmNvbG91clBhbGV0dGUpKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG4gICAgZ2V0KG0pIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IFN0cmluZ1V0aWxzLmhhc2hDb2RlKG0pO1xuICAgICAgICBjb25zdCBwSSA9IGhhc2ggJSBVbmtub3duQ29sb3JQYWxldHRlLnBhbGV0dGUubGVuZ3RoO1xuICAgICAgICByZXR1cm4gY29ycmVjdENvbG9yKFVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZVtwSV0pO1xuICAgIH1cbn1cblVua25vd25Db2xvclBhbGV0dGUucGFsZXR0ZSA9IFVua25vd25Db2xvclBhbGV0dGUuYnVpbGRQYWxldHRlKCk7XG5leHBvcnQgY2xhc3MgVW5rbm93blNlcVBhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgR3JheSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JheSA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgdGhpcy5ncmF5ID0gbmV3IEdyYXlBbGxQYWxldHRlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmdyYXk7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgQ29sb3IoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbG9yID09PSB2b2lkIDApXG4gICAgICAgICAgICB0aGlzLmNvbG9yID0gbmV3IFVua25vd25Db2xvclBhbGV0dGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sb3I7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZFc1cmJtOTNiaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluVnVhMjV2ZDI0dWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJSVUVzVDBGQlR5eExRVUZMTEVWQlFVVXNUVUZCVFN4cFFrRkJhVUlzUTBGQlF6dEJRVVYwUXpzN1MwRkZTenRCUVVOTUxGTkJRVk1zV1VGQldTeERRVUZETEV0QlFXOUNPMGxCUTNoRExFbEJRVWtzUzBGQlN5eEpRVUZKTEVsQlFVazdVVUZEWml4UFFVRlBMR3RDUVVGclFpeERRVUZETzBsQlJUVkNMRTFCUVUwc1QwRkJUeXhIUVVGWExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wbEJRMnBFTEUxQlFVMHNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGxCUXpsQ0xFMUJRVTBzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBsQlF6bENMRTFCUVUwc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRemxDTEhkRFFVRjNRenRKUVVONFF5eE5RVUZOTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkROVVlzZVVKQlFYbENPMGxCUTNwQ0xFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNSMEZCUnl4WFFVRlhMRU5CUVVNN1NVRkRPVUlzVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZCUXl4SFFVRkhMRmRCUVZjc1EwRkJRenRKUVVNNVFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4RFFVRkRMRWRCUVVjc1YwRkJWeXhEUVVGRE8wbEJRemxDTEVsQlFVa3NWMEZCVnl4SFFVRkhMRWRCUVVjc1JVRkJSVHRSUVVOeVFpeFBRVUZQTEU5QlFVOHNTMEZCU3l4SFFVRkhMRWRCUVVjc1NVRkJTU3hMUVVGTExFZEJRVWNzUjBGQlJ5eEpRVUZKTEV0QlFVc3NSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJRenRMUVVNMVJEdEpRVU5FTEU5QlFVOHNSVUZCUlN4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdRVUZEYWtNc1EwRkJRenRCUVVWRUxFMUJRVTBzVDBGQlR5eFhRVUZYTzBsQlEyWXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGVE8xRkJRemxDTEVsQlFVa3NTVUZCU1N4SFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOeVFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJRenRaUVVOb1FpeFBRVUZQTEVsQlFVa3NRMEZCUXp0UlFVTmtMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVmNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzFsQlEzcERMRTFCUVUwc1IwRkJSeXhIUVVGWExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRjRU1zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRPMWxCUTJ4RExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl3eVFrRkJNa0k3VTBGRGRrTTdVVUZEUkN4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03UTBGRFJqdEJRVVZFTEU5QlFVOHNSVUZCWVN4alFVRmpMRVZCUVVNc1RVRkJUU3huUWtGQlowSXNRMEZCUXp0QlFVVXhSQ3hOUVVGTkxFOUJRV2RDTEdsQ1FVRnBRanREUVVWMFF6dEJRVVZFTEUxQlFVMHNUMEZCVHl4alFVRmxMRk5CUVZFc2FVSkJRV2xDTzBsQlF6VkRMRWRCUVVjc1EwRkJReXhEUVVGVE8xRkJRMnhDTEU5QlFVOHNVMEZCVXl4RFFVRkRPMGxCUTI1Q0xFTkJRVU03UTBGRFJqdEJRVWRFTEUxQlFVMHNUMEZCVHl4dFFrRkJiMElzVTBGQlVTeHBRa0ZCYVVJN1NVRkhhRVFzVFVGQlRTeERRVUZETEZsQlFWazdVVUZEZWtJc1RVRkJUU3hIUVVGSExFZEJRVWtzUlVGQlpTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zWTBGQll5eERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRjRVlzVDBGQlR5eEhRVUZITEVOQlFVTTdTVUZEWWl4RFFVRkRPMGxCUlUwc1IwRkJSeXhEUVVGRExFTkJRVk03VVVGRGJFSXNUVUZCVFN4SlFVRkpMRWRCUVZjc1YwRkJWeXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTTNReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVkQlFVY3NiVUpCUVcxQ0xFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTnlSQ3hQUVVGUExGbEJRVmtzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhQUVVGUExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjJSQ3hEUVVGRE96dEJRVmhoTERKQ1FVRlBMRWRCUVdFc2JVSkJRVzFDTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNN1FVRmpka1VzVFVGQlRTeFBRVUZQTEd0Q1FVRnRRaXhUUVVGUkxHTkJRV003U1VGSE4wTXNUVUZCVFN4TFFVRkxMRWxCUVVrN1VVRkRjRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4TFFVRkxMRXRCUVVzc1EwRkJRenRaUVVOMFFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1kwRkJZeXhGUVVGRkxFTkJRVU03VVVGRGJrTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRMjVDTEVOQlFVTTdTVUZKVFN4TlFVRk5MRXRCUVVzc1MwRkJTenRSUVVOeVFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRXRCUVVzc1MwRkJTeXhEUVVGRE8xbEJRM1pDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3h0UWtGQmJVSXNSVUZCUlN4RFFVRkRPMUZCUTNwRExFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXp0SlFVTndRaXhEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklIVnBJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzkxYVNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJFUnlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlpHY25PMXh1WEc0dktpb2diV0ZyWlhNZ2RHaGxJR052Ykc5eUlHeGxjM01nZDJocGRHVXNJRzFoYTJWeklIUm9aU0IwY21GdWMzQmhjbVZ1WTNrZ1pXWm1aV04wSUdGc2QyRjVjeUJ3WlhKalpYQjBhV0pzWlZ4dUlDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHTnZiRzl5SUhnZ1kyOXZjbVJwYm1GMFpTNWNiaUFxSUNvdlhHNW1kVzVqZEdsdmJpQmpiM0p5WldOMFEyOXNiM0lvWTI5c2IzSTZJSE4wY21sdVp5QjhJRzUxYkd3cE9pQnpkSEpwYm1jZ2UxeHVJQ0JwWmlBb1kyOXNiM0lnUFQwZ2JuVnNiQ2xjYmlBZ0lDQnlaWFIxY200Z0ozSm5ZaWd4TURBc01UQXdMREV3TUNrbk8xeHVYRzRnSUdOdmJuTjBJR1JuUTI5c2IzSTZJRzUxYldKbGNpQTlJRVJITGtOdmJHOXlMbVp5YjIxSWRHMXNLR052Ykc5eUtUdGNiaUFnWTI5dWMzUWdaeUE5SUVSSExrTnZiRzl5TG1jb1pHZERiMnh2Y2lrN1hHNGdJR052Ym5OMElISWdQU0JFUnk1RGIyeHZjaTV5S0dSblEyOXNiM0lwTzF4dUlDQmpiMjV6ZENCaUlEMGdSRWN1UTI5c2IzSXVZaWhrWjBOdmJHOXlLVHRjYmlBZ0x5OGdZMkZzWTNWc1lYUmxJR1YxWTJ4cFpHVmhiaUJrYVhOMFlXNWpaU0IwYnlCM2FHbDBaVnh1SUNCamIyNXpkQ0JrYVhOMFZHOUNiR0ZqYXlBOUlFMWhkR2d1YzNGeWRDaE5ZWFJvTG5CdmR5Z3dJQzBnY2l3Z01pa2dLeUJOWVhSb0xuQnZkeWd3SUMwZ1p5d2dNaWtnS3lCTllYUm9MbkJ2ZHlnd0lDMGdZaXdnTWlrcE8xeHVJQ0F2THlCdWIzSnRZV3hwZW1VZ2RtVmpkRzl5SUhJZ1p5QmlYRzRnSUdOdmJuTjBJRzV2Y20xU0lEMGdjaUF2SUdScGMzUlViMEpzWVdOck8xeHVJQ0JqYjI1emRDQnViM0p0UnlBOUlHY2dMeUJrYVhOMFZHOUNiR0ZqYXp0Y2JpQWdZMjl1YzNRZ2JtOXliVUlnUFNCaUlDOGdaR2x6ZEZSdlFteGhZMnM3WEc0Z0lHbG1JQ2hrYVhOMFZHOUNiR0ZqYXlBK0lESXhNQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQmdjbWRpS0NSN2JtOXliVklnS2lBeU1UQjlMQ1I3Ym05eWJVY2dLaUF5TVRCOUxDUjdibTl5YlVJZ0tpQXlNVEI5S1dBN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUVSSExrTnZiRzl5TG5SdlVtZGlLR1JuUTI5c2IzSXBPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVTNSeWFXNW5WWFJwYkhNZ2UxeHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHaGhjMmhEYjJSbEtITTZJSE4wY21sdVp5azZJRzUxYldKbGNpQjdYRzRnSUNBZ2JHVjBJR2hoYzJnNklHNTFiV0psY2lBOUlEQTdYRzRnSUNBZ2FXWWdLSE11YkdWdVozUm9JRDA5UFNBd0tWeHVJQ0FnSUNBZ2NtVjBkWEp1SUdoaGMyZzdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FUb2diblZ0WW1WeUlEMGdNRHNnYVNBOElITXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR05vY2pvZ2JuVnRZbVZ5SUQwZ2N5NWphR0Z5UTI5a1pVRjBLR2twTzF4dUlDQWdJQ0FnYUdGemFDQTlJQ2dvYUdGemFDQThQQ0ExS1NBdElHaGhjMmdwSUNzZ1kyaHlPMXh1SUNBZ0lDQWdhR0Z6YUNCOFBTQXdPeUF2THlCRGIyNTJaWEowSUhSdklETXlZbWwwSUdsdWRHVm5aWEpjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdoaGMyZzdYRzRnSUgxY2JuMWNibHh1YVcxd2IzSjBJSHRUWlhGUVlXeGxkSFJsTENCVFpYRlFZV3hsZEhSbFFtRnpaWDBnWm5KdmJTQW5MaTl6WlhFdGNHRnNaWFIwWlhNbk8xeHVYRzVsZUhCdmNuUWdZV0p6ZEhKaFkzUWdZMnhoYzNNZ1ZXNXJibTkzYmxObGNWQmhiR1YwZEdVZ2FXMXdiR1Z0Wlc1MGN5QlRaWEZRWVd4bGRIUmxJSHRjYmlBZ2NIVmliR2xqSUdGaWMzUnlZV04wSUdkbGRDaHRPaUJ6ZEhKcGJtY3BPaUJ6ZEhKcGJtYzdYRzU5WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJIY21GNVFXeHNVR0ZzWlhSMFpTQmxlSFJsYm1SeklGVnVhMjV2ZDI1VFpYRlFZV3hsZEhSbElIdGNiaUFnY0hWaWJHbGpJR2RsZENodE9pQnpkSEpwYm1jcE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUhKbGRIVnliaUFuSXpZMk5qWTJOaWM3WEc0Z0lIMWNibjFjYmx4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nVlc1cmJtOTNia052Ykc5eVVHRnNaWFIwWlNCbGVIUmxibVJ6SUZWdWEyNXZkMjVUWlhGUVlXeGxkSFJsSUh0Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCd1lXeGxkSFJsT2lCemRISnBibWRiWFNBOUlGVnVhMjV2ZDI1RGIyeHZjbEJoYkdWMGRHVXVZblZwYkdSUVlXeGxkSFJsS0NrN1hHNWNiaUFnY0hKcGRtRjBaU0J6ZEdGMGFXTWdZblZwYkdSUVlXeGxkSFJsS0NrNklITjBjbWx1WjF0ZElIdGNiaUFnSUNCamIyNXpkQ0J5WlhNZ1BTQW9XMTBnWVhNZ2MzUnlhVzVuVzEwcExtTnZibU5oZENndUxpNVBZbXBsWTNRdWRtRnNkV1Z6S0ZObGNWQmhiR1YwZEdWQ1lYTmxMbU52Ykc5MWNsQmhiR1YwZEdVcEtUdGNiaUFnSUNCeVpYUjFjbTRnY21Wek8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklHZGxkQ2h0T2lCemRISnBibWNwT2lCemRISnBibWNnZTF4dUlDQWdJR052Ym5OMElHaGhjMmc2SUc1MWJXSmxjaUE5SUZOMGNtbHVaMVYwYVd4ekxtaGhjMmhEYjJSbEtHMHBPMXh1SUNBZ0lHTnZibk4wSUhCSklEMGdhR0Z6YUNBbElGVnVhMjV2ZDI1RGIyeHZjbEJoYkdWMGRHVXVjR0ZzWlhSMFpTNXNaVzVuZEdnN1hHNGdJQ0FnY21WMGRYSnVJR052Y25KbFkzUkRiMnh2Y2loVmJtdHViM2R1UTI5c2IzSlFZV3hsZEhSbExuQmhiR1YwZEdWYmNFbGRLVHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVnpJR1Y0ZEdWdVpITWdVMlZ4VUdGc1pYUjBaVUpoYzJVZ2UxeHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5Qm5jbUY1T2lCVFpYRlFZV3hsZEhSbE8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwSUVkeVlYa29LVG9nVTJWeFVHRnNaWFIwWlNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WjNKaGVTQTlQVDBnZG05cFpDQXdLVnh1SUNBZ0lDQWdkR2hwY3k1bmNtRjVJRDBnYm1WM0lFZHlZWGxCYkd4UVlXeGxkSFJsS0NrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVozSmhlVHRjYmlBZ2ZWeHVYRzRnSUhCeWFYWmhkR1VnYzNSaGRHbGpJR052Ykc5eU9pQlRaWEZRWVd4bGRIUmxPMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMElFTnZiRzl5S0NrNklGTmxjVkJoYkdWMGRHVWdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtTnZiRzl5SUQwOVBTQjJiMmxrSURBcFhHNGdJQ0FnSUNCMGFHbHpMbU52Ykc5eUlEMGdibVYzSUZWdWEyNXZkMjVEYjJ4dmNsQmhiR1YwZEdVb0tUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiMnh2Y2p0Y2JpQWdmVnh1ZlZ4dUlsMTkiLCJpbXBvcnQgeyBtb25vbWVyVG9TaG9ydCB9IGZyb20gJy4vbWFjcm9tb2xlY3VsZSc7XG5jb25zdCB1bmRlZmluZWRDb2xvciA9ICdyZ2IoMTAwLDEwMCwxMDApJztcbmNvbnN0IGdyYXlDb2xvciA9ICcjODA4MDgwJztcbmNvbnN0IGJsYWNrQ29sb3IgPSAncmdiKDAsMCwwKSc7XG5jb25zdCBtb25vbWVyVG9TaG9ydEZ1bmN0aW9uID0gbW9ub21lclRvU2hvcnQ7XG5leHBvcnQgdmFyIERyYXdTdHlsZTtcbihmdW5jdGlvbiAoRHJhd1N0eWxlKSB7XG4gICAgRHJhd1N0eWxlW1wiTVNBXCJdID0gXCJNU0FcIjtcbiAgICBEcmF3U3R5bGVbXCJjbGFzc2ljXCJdID0gXCJjbGFzc2ljXCI7XG59KShEcmF3U3R5bGUgfHwgKERyYXdTdHlsZSA9IHt9KSk7XG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCBwcmludHMgYSBzdHJpbmcgYWxpZ25lZCB0byBsZWZ0IG9yIGNlbnRlcmVkLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB4IHggY29vcmRpbmF0ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB5IHkgY29vcmRpbmF0ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB3IFdpZHRoLlxuICogQHBhcmFtIHtudW1iZXJ9IGggSGVpZ2h0LlxuICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGcgQ2FudmFzIHJlbmRlcmluZyBjb250ZXh0LlxuICogQHBhcmFtIHtzdHJpbmd9IHMgU3RyaW5nIHRvIHByaW50LlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2xvcj11bmRlZmluZWRDb2xvcl0gU3RyaW5nIGNvbG9yLlxuICogQHBhcmFtIHtudW1iZXJ9IFtwaXZvdD0wXSBQaXJ2b3QuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtsZWZ0PWZhbHNlXSBJcyBsZWZ0IGFsaWduZWQuXG4gKiBAcGFyYW0ge251bWJlcn0gW3RyYW5zcGFyZW5jeVJhdGU9MC4wXSBUcmFuc3BhcmVuY3kgcmF0ZSB3aGVyZSAxLjAgaXMgZnVsbHkgdHJhbnNwYXJlbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc2VwYXJhdG9yPScnXSBJcyBzZXBhcmF0b3IgZm9yIHNlcXVlbmNlLlxuICogQHBhcmFtIHtib29sZWFufSBbbGFzdD1mYWxzZV0gSXMgY2hlY2tlciBpZiBlbGVtZW50IGxhc3Qgb3Igbm90LlxuICogQHBhcmFtIGRyYXdTdHlsZSBJcyBkcmF3IHN0eWxlLiBNU0EgLSBmb3IgbXVsdGljaGFyU2VxLCBjbGFzc2ljIC0gZm9yIG90aGVyIHNlcS5cbiAqIEBwYXJhbSBtYXhXb3JkIElzIGFycmF5IG9mIG1heCB3b3JkcyBmb3IgZWFjaCBsaW5lLlxuICogQHBhcmFtIHdvcmRJZHggSXMgaW5kZXggb2Ygd29yZCB3ZSBjdXJyZW50bHkgZHJhdy5cbiAqIEBwYXJhbSBncmlkQ2VsbCBJcyBncmlkIGNlbGwuXG4gKiBAcGFyYW0gcmVmZXJlbmNlU2VxdWVuY2UgSXMgcmVmZXJlbmNlIHNlcXVlbmNlIGZvciBkaWZmIG1vZGUuXG4gKiBAcGFyYW0gbWF4TGVuZ3RoT2ZNb25vbWVyIElzIG1heCBsZW5ndGggb2YgbW9ub21lci5cbiAqIEByZXR1cm4ge251bWJlcn0geCBjb29yZGluYXRlIHRvIHN0YXJ0IHByaW50aW5nIGF0LlxuICovXG5leHBvcnQgY29uc3QgcHJpbnRMZWZ0T3JDZW50ZXJlZCA9ICh4LCB5LCB3LCBoLCBnLCBzLCBjb2xvciA9IHVuZGVmaW5lZENvbG9yLCBwaXZvdCA9IDAsIGxlZnQgPSBmYWxzZSwgdHJhbnNwYXJlbmN5UmF0ZSA9IDEuMCwgc2VwYXJhdG9yID0gJycsIGxhc3QgPSBmYWxzZSwgZHJhd1N0eWxlID0gRHJhd1N0eWxlLmNsYXNzaWMsIG1heFdvcmQgPSB7fSwgd29yZElkeCA9IDAsIGdyaWRDZWxsID0gbnVsbCwgcmVmZXJlbmNlU2VxdWVuY2UgPSBbXSwgbWF4TGVuZ3RoT2ZNb25vbWVyID0gbnVsbCkgPT4ge1xuICAgIHZhciBfYSwgX2IsIF9jO1xuICAgIGcudGV4dEFsaWduID0gJ3N0YXJ0JztcbiAgICBsZXQgY29sb3JQYXJ0ID0gcy5zdWJzdHJpbmcoMCk7XG4gICAgbGV0IGdyYXlQYXJ0ID0gbGFzdCA/ICcnIDogc2VwYXJhdG9yO1xuICAgIGlmIChkcmF3U3R5bGUgPT09IERyYXdTdHlsZS5NU0EpIHtcbiAgICAgICAgZ3JheVBhcnQgPSAnJztcbiAgICB9XG4gICAgbGV0IGNvbG9yQ29kZSA9IHRydWU7XG4gICAgbGV0IGNvbXBhcmVXaXRoQ3VycmVudCA9IHRydWU7XG4gICAgbGV0IGhpZ2hsaWdodERpZmZlcmVuY2UgPSAnZGlmZmVyZW5jZSc7XG4gICAgaWYgKChncmlkQ2VsbCAhPSBudWxsKSAmJiAoZ3JpZENlbGwuY2VsbC5jb2x1bW4gIT0gbnVsbCkpIHtcbiAgICAgICAgY29sb3JDb2RlID0gKF9hID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4udGVtcFsnY29sb3ItY29kZSddKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0cnVlO1xuICAgICAgICBjb21wYXJlV2l0aEN1cnJlbnQgPSAoX2IgPSBncmlkQ2VsbC5jZWxsLmNvbHVtbi50ZW1wWydjb21wYXJlLXdpdGgtY3VycmVudCddKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB0cnVlO1xuICAgICAgICBoaWdobGlnaHREaWZmZXJlbmNlID0gKF9jID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4udGVtcFsnaGlnaGxpZ2h0LWRpZmZlcmVuY2UnXSkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogJ2RpZmZlcmVuY2UnO1xuICAgIH1cbiAgICBjb25zdCBjdXJyZW50TW9ub21lciA9IHJlZmVyZW5jZVNlcXVlbmNlW3dvcmRJZHhdO1xuICAgIGlmIChjb21wYXJlV2l0aEN1cnJlbnQgJiYgKHJlZmVyZW5jZVNlcXVlbmNlLmxlbmd0aCA+IDApICYmIChoaWdobGlnaHREaWZmZXJlbmNlID09PSAnZGlmZmVyZW5jZScpKSB7XG4gICAgICAgIHRyYW5zcGFyZW5jeVJhdGUgPSAoY29sb3JQYXJ0ID09IGN1cnJlbnRNb25vbWVyKSA/IDAuMyA6IHRyYW5zcGFyZW5jeVJhdGU7XG4gICAgfVxuICAgIGlmIChjb21wYXJlV2l0aEN1cnJlbnQgJiYgKHJlZmVyZW5jZVNlcXVlbmNlLmxlbmd0aCA+IDApICYmIChoaWdobGlnaHREaWZmZXJlbmNlID09PSAnZXF1YWwnKSkge1xuICAgICAgICB0cmFuc3BhcmVuY3lSYXRlID0gKGNvbG9yUGFydCAhPSBjdXJyZW50TW9ub21lcikgPyAwLjMgOiB0cmFuc3BhcmVuY3lSYXRlO1xuICAgIH1cbiAgICBpZiAobWF4TGVuZ3RoT2ZNb25vbWVyICE9IG51bGwpIHtcbiAgICAgICAgY29sb3JQYXJ0ID0gbW9ub21lclRvU2hvcnRGdW5jdGlvbihjb2xvclBhcnQsIG1heExlbmd0aE9mTW9ub21lcik7XG4gICAgfVxuICAgIGxldCB0ZXh0U2l6ZSA9IGcubWVhc3VyZVRleHQoY29sb3JQYXJ0ICsgZ3JheVBhcnQpO1xuICAgIGNvbnN0IGluZGVudCA9IDU7XG4gICAgbGV0IG1heENvbG9yVGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KGNvbG9yUGFydCkud2lkdGg7XG4gICAgbGV0IGNvbG9yVGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KGNvbG9yUGFydCkud2lkdGg7XG4gICAgY29uc3QgZHkgPSBoIC8gMiAtICh0ZXh0U2l6ZS5mb250Qm91bmRpbmdCb3hBc2NlbnQgKyB0ZXh0U2l6ZS5mb250Qm91bmRpbmdCb3hEZXNjZW50KSAvIDIgKyAxO1xuICAgIHRleHRTaXplID0gdGV4dFNpemUud2lkdGg7XG4gICAgaWYgKGRyYXdTdHlsZSA9PT0gRHJhd1N0eWxlLk1TQSkge1xuICAgICAgICBtYXhDb2xvclRleHRTaXplID0gbWF4V29yZFt3b3JkSWR4XTtcbiAgICAgICAgdGV4dFNpemUgPSBtYXhXb3JkW3dvcmRJZHhdO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkcmF3KGR4MSwgZHgyKSB7XG4gICAgICAgIGNvbnN0IGRyYXdDb2xvciA9IGNvbG9yQ29kZSA/IGNvbG9yIDogYmxhY2tDb2xvcjtcbiAgICAgICAgZy5maWxsU3R5bGUgPSBkcmF3Q29sb3I7XG4gICAgICAgIGcuZ2xvYmFsQWxwaGEgPSB0cmFuc3BhcmVuY3lSYXRlO1xuICAgICAgICBpZiAoZHJhd1N0eWxlID09PSBEcmF3U3R5bGUuY2xhc3NpYykge1xuICAgICAgICAgICAgZy5maWxsVGV4dChjb2xvclBhcnQsIHggKyBkeDEsIHkgKyBkeSk7XG4gICAgICAgICAgICBnLmZpbGxTdHlsZSA9IGdyYXlDb2xvcjtcbiAgICAgICAgICAgIGcuZmlsbFRleHQoZ3JheVBhcnQsIHggKyBkeDIsIHkgKyBkeSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRyYXdTdHlsZSA9PT0gRHJhd1N0eWxlLk1TQSkge1xuICAgICAgICAgICAgZy5maWxsU3R5bGUgPSBkcmF3Q29sb3I7XG4gICAgICAgICAgICBnLmZpbGxUZXh0KGNvbG9yUGFydCwgeCArIGR4MSArICgobWF4V29yZFt3b3JkSWR4XSAtIGNvbG9yVGV4dFNpemUpIC8gMiksIHkgKyBkeSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxlZnQgfHwgdGV4dFNpemUgPiB3KSB7XG4gICAgICAgIGRyYXcoaW5kZW50LCBpbmRlbnQgKyBtYXhDb2xvclRleHRTaXplKTtcbiAgICAgICAgcmV0dXJuIHggKyBtYXhDb2xvclRleHRTaXplICsgZy5tZWFzdXJlVGV4dChncmF5UGFydCkud2lkdGg7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBkeCA9ICh3IC0gdGV4dFNpemUpIC8gMjtcbiAgICAgICAgZHJhdyhkeCwgZHggKyBtYXhDb2xvclRleHRTaXplKTtcbiAgICAgICAgcmV0dXJuIHggKyBkeCArIG1heENvbG9yVGV4dFNpemU7XG4gICAgfVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVkyVnNiQzF5Wlc1a1pYSmxjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkltTmxiR3d0Y21WdVpHVnlaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlJVRXNUMEZCVHl4RlFVRkRMR05CUVdNc1JVRkJReXhOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUlM5RExFMUJRVTBzWTBGQll5eEhRVUZITEd0Q1FVRnJRaXhEUVVGRE8wRkJRekZETEUxQlFVMHNVMEZCVXl4SFFVRkhMRk5CUVZNc1EwRkJRenRCUVVNMVFpeE5RVUZOTEZWQlFWVXNSMEZCUnl4WlFVRlpMRU5CUVVNN1FVRkRhRU1zVFVGQlRTeHpRa0ZCYzBJc1IwRkJNRVFzWTBGQll5eERRVUZETzBGQlJYSkhMRTFCUVUwc1EwRkJUaXhKUVVGWkxGTkJSMWc3UVVGSVJDeFhRVUZaTEZOQlFWTTdTVUZEYmtJc2QwSkJRVmNzUTBGQlFUdEpRVU5ZTEdkRFFVRnRRaXhEUVVGQk8wRkJRM0pDTEVOQlFVTXNSVUZJVnl4VFFVRlRMRXRCUVZRc1UwRkJVeXhSUVVkd1FqdEJRVVZFT3pzN096czdPenM3T3pzN096czdPenM3T3pzN08wZEJjMEpITzBGQlEwZ3NUVUZCVFN4RFFVRkRMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NRMEZEYWtNc1EwRkJVeXhGUVVGRkxFTkJRVk1zUlVGQlJTeERRVUZUTEVWQlFVVXNRMEZCVXl4RlFVTXhReXhEUVVFeVFpeEZRVUZGTEVOQlFWTXNSVUZCUlN4UlFVRm5RaXhqUVVGakxFVkJRM1JGTEZGQlFXZENMRU5CUVVNc1JVRkJSU3hKUVVGSkxFZEJRVWNzUzBGQlN5eEZRVUZGTEcxQ1FVRXlRaXhIUVVGSExFVkJReTlFTEZsQlFXOUNMRVZCUVVVc1JVRkJSU3hQUVVGblFpeExRVUZMTEVWQlFVVXNXVUZCZFVJc1UwRkJVeXhEUVVGRExFOUJRVThzUlVGQlJTeFZRVUYxUXl4RlFVRkZMRVZCUVVVc1ZVRkJhMElzUTBGQlF5eEZRVUZGTEZkQlFTdENMRWxCUVVrc1JVRkJSU3h2UWtGQk9FSXNSVUZCUlN4RlFVRkZMSEZDUVVGdlF5eEpRVUZKTEVWQlFWVXNSVUZCUlRzN1NVRkRjRklzUTBGQlF5eERRVUZETEZOQlFWTXNSMEZCUnl4UFFVRlBMRU5CUVVNN1NVRkRkRUlzU1VGQlNTeFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU12UWl4SlFVRkpMRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhEUVVGRE8wbEJRM0pETEVsQlFVa3NVMEZCVXl4TFFVRkxMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRVVU3VVVGREwwSXNVVUZCVVN4SFFVRkhMRVZCUVVVc1EwRkJRenRMUVVObU8wbEJRMFFzU1VGQlNTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRPMGxCUTNKQ0xFbEJRVWtzYTBKQlFXdENMRWRCUVVjc1NVRkJTU3hEUVVGRE8wbEJRemxDTEVsQlFVa3NiVUpCUVcxQ0xFZEJRVWNzV1VGQldTeERRVUZETzBsQlEzWkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNSVUZCUlR0UlFVTjRSQ3hUUVVGVExFZEJRVWNzVFVGQlFTeFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEcxRFFVRkpMRWxCUVVrc1EwRkJRenRSUVVNMVJDeHJRa0ZCYTBJc1IwRkJSeXhOUVVGQkxGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXh6UWtGQmMwSXNRMEZCUXl4dFEwRkJTU3hKUVVGSkxFTkJRVU03VVVGREwwVXNiVUpCUVcxQ0xFZEJRVWNzVFVGQlFTeFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zYzBKQlFYTkNMRU5CUVVNc2JVTkJRVWtzV1VGQldTeERRVUZETzB0QlJYcEdPMGxCUTBRc1RVRkJUU3hqUVVGakxFZEJRVmNzYVVKQlFXbENMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRE1VUXNTVUZCU1N4clFrRkJhMElzU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeExRVUZMTEZsQlFWa3NRMEZCUXl4RlFVRkZPMUZCUTJ4SExHZENRVUZuUWl4SFFVRkhMRU5CUVVNc1UwRkJVeXhKUVVGSkxHTkJRV01zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExHZENRVUZuUWl4RFFVRkRPMHRCUXpORk8wbEJRMFFzU1VGQlNTeHJRa0ZCYTBJc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEcxQ1FVRnRRaXhMUVVGTExFOUJRVThzUTBGQlF5eEZRVUZGTzFGQlF6ZEdMR2RDUVVGblFpeEhRVUZITEVOQlFVTXNVMEZCVXl4SlFVRkpMR05CUVdNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMR2RDUVVGblFpeERRVUZETzB0QlF6TkZPMGxCUTBRc1NVRkJTU3hyUWtGQmEwSXNTVUZCU1N4SlFVRkpMRVZCUVVVN1VVRkRPVUlzVTBGQlV5eEhRVUZITEhOQ1FVRnpRaXhEUVVGRExGTkJRVk1zUlVGQlJTeHJRa0ZCYTBJc1EwRkJReXhEUVVGRE8wdEJRMjVGTzBsQlIwUXNTVUZCU1N4UlFVRlJMRWRCUVZFc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF5eFRRVUZUTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNN1NVRkRlRVFzVFVGQlRTeE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUldwQ0xFbEJRVWtzWjBKQlFXZENMRWRCUVVjc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNN1NVRkRkRVFzU1VGQlNTeGhRVUZoTEVkQlFVY3NRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTTdTVUZEYmtRc1RVRkJUU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJReXh4UWtGQmNVSXNSMEZCUnl4UlFVRlJMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRemxHTEZGQlFWRXNSMEZCUnl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRE8wbEJRekZDTEVsQlFVa3NVMEZCVXl4TFFVRkxMRk5CUVZNc1EwRkJReXhIUVVGSExFVkJRVVU3VVVGREwwSXNaMEpCUVdkQ0xFZEJRVWNzVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTNCRExGRkJRVkVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1MwRkROMEk3U1VGRlJDeFRRVUZUTEVsQlFVa3NRMEZCUXl4SFFVRlhMRVZCUVVVc1IwRkJWenRSUVVOd1F5eE5RVUZOTEZOQlFWTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNWVUZCVlN4RFFVRkRPMUZCUTJwRUxFTkJRVU1zUTBGQlF5eFRRVUZUTEVkQlFVY3NVMEZCVXl4RFFVRkRPMUZCUTNoQ0xFTkJRVU1zUTBGQlF5eFhRVUZYTEVkQlFVY3NaMEpCUVdkQ0xFTkJRVU03VVVGRGFrTXNTVUZCU1N4VFFVRlRMRXRCUVVzc1UwRkJVeXhEUVVGRExFOUJRVThzUlVGQlJUdFpRVU51UXl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFpRVU4yUXl4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExGTkJRVk1zUTBGQlF6dFpRVU40UWl4RFFVRkRMRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFRRVU4yUXp0UlFVTkVMRWxCUVVrc1UwRkJVeXhMUVVGTExGTkJRVk1zUTBGQlF5eEhRVUZITEVWQlFVVTdXVUZETDBJc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eFRRVUZUTEVOQlFVTTdXVUZEZUVJc1EwRkJReXhEUVVGRExGRkJRVkVzUTBGQlF5eFRRVUZUTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMR0ZCUVdFc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1EwRkJRenRUUVVOdVJqdEpRVU5JTEVOQlFVTTdTVUZGUkN4SlFVRkpMRWxCUVVrc1NVRkJTU3hSUVVGUkxFZEJRVWNzUTBGQlF5eEZRVUZGTzFGQlEzaENMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzVFVGQlRTeEhRVUZITEdkQ1FVRm5RaXhEUVVGRExFTkJRVU03VVVGRGVFTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1owSkJRV2RDTEVkQlFVY3NRMEZCUXl4RFFVRkRMRmRCUVZjc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTTdTMEZGTjBRN1UwRkJUVHRSUVVOTUxFMUJRVTBzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU01UWl4SlFVRkpMRU5CUVVNc1JVRkJSU3hGUVVGRkxFVkJRVVVzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8xRkJRMmhETEU5QlFVOHNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhuUWtGQlowSXNRMEZCUXp0TFFVTnNRenRCUVVOSUxFTkJRVU1zUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUVSSElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOWtaeWM3WEc1Y2JtbHRjRzl5ZENCN2JXOXViMjFsY2xSdlUyaHZjblI5SUdaeWIyMGdKeTR2YldGamNtOXRiMnhsWTNWc1pTYzdYRzVjYm1OdmJuTjBJSFZ1WkdWbWFXNWxaRU52Ykc5eUlEMGdKM0puWWlneE1EQXNNVEF3TERFd01Da25PMXh1WTI5dWMzUWdaM0poZVVOdmJHOXlJRDBnSnlNNE1EZ3dPREFuTzF4dVkyOXVjM1FnWW14aFkydERiMnh2Y2lBOUlDZHlaMklvTUN3d0xEQXBKenRjYm1OdmJuTjBJRzF2Ym05dFpYSlViMU5vYjNKMFJuVnVZM1JwYjI0NklDaGhiV2x1YnpvZ2MzUnlhVzVuTENCdFlYaE1aVzVuZEdoUFprMXZibTl0WlhJNklHNTFiV0psY2lrZ1BUNGdjM1J5YVc1bklEMGdiVzl1YjIxbGNsUnZVMmh2Y25RN1hHNWNibVY0Y0c5eWRDQmxiblZ0SUVSeVlYZFRkSGxzWlNCN1hHNGdJRTFUUVNBOUlDZE5VMEVuTEZ4dUlDQmpiR0Z6YzJsaklEMGdKMk5zWVhOemFXTW5MRnh1ZlZ4dVhHNHZLaXBjYmlBcUlFRWdablZ1WTNScGIyNGdkR2hoZENCd2NtbHVkSE1nWVNCemRISnBibWNnWVd4cFoyNWxaQ0IwYnlCc1pXWjBJRzl5SUdObGJuUmxjbVZrTGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0I0SUhnZ1kyOXZjbVJwYm1GMFpTNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0I1SUhrZ1kyOXZjbVJwYm1GMFpTNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0IzSUZkcFpIUm9MbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdnZ1NHVnBaMmgwTGx4dUlDb2dRSEJoY21GdElIdERZVzUyWVhOU1pXNWtaWEpwYm1kRGIyNTBaWGgwTWtSOUlHY2dRMkZ1ZG1GeklISmxibVJsY21sdVp5QmpiMjUwWlhoMExseHVJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtZDlJSE1nVTNSeWFXNW5JSFJ2SUhCeWFXNTBMbHh1SUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUZ0amIyeHZjajExYm1SbFptbHVaV1JEYjJ4dmNsMGdVM1J5YVc1bklHTnZiRzl5TGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdHdhWFp2ZEQwd1hTQlFhWEoyYjNRdVhHNGdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJRnRzWldaMFBXWmhiSE5sWFNCSmN5QnNaV1owSUdGc2FXZHVaV1F1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1czUnlZVzV6Y0dGeVpXNWplVkpoZEdVOU1DNHdYU0JVY21GdWMzQmhjbVZ1WTNrZ2NtRjBaU0IzYUdWeVpTQXhMakFnYVhNZ1puVnNiSGtnZEhKaGJuTndZWEpsYm5SY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJjMlZ3WVhKaGRHOXlQU2NuWFNCSmN5QnpaWEJoY21GMGIzSWdabTl5SUhObGNYVmxibU5sTGx4dUlDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQmJiR0Z6ZEQxbVlXeHpaVjBnU1hNZ1kyaGxZMnRsY2lCcFppQmxiR1Z0Wlc1MElHeGhjM1FnYjNJZ2JtOTBMbHh1SUNvZ1FIQmhjbUZ0SUdSeVlYZFRkSGxzWlNCSmN5QmtjbUYzSUhOMGVXeGxMaUJOVTBFZ0xTQm1iM0lnYlhWc2RHbGphR0Z5VTJWeExDQmpiR0Z6YzJsaklDMGdabTl5SUc5MGFHVnlJSE5sY1M1Y2JpQXFJRUJ3WVhKaGJTQnRZWGhYYjNKa0lFbHpJR0Z5Y21GNUlHOW1JRzFoZUNCM2IzSmtjeUJtYjNJZ1pXRmphQ0JzYVc1bExseHVJQ29nUUhCaGNtRnRJSGR2Y21SSlpIZ2dTWE1nYVc1a1pYZ2diMllnZDI5eVpDQjNaU0JqZFhKeVpXNTBiSGtnWkhKaGR5NWNiaUFxSUVCd1lYSmhiU0JuY21sa1EyVnNiQ0JKY3lCbmNtbGtJR05sYkd3dVhHNGdLaUJBY0dGeVlXMGdjbVZtWlhKbGJtTmxVMlZ4ZFdWdVkyVWdTWE1nY21WbVpYSmxibU5sSUhObGNYVmxibU5sSUdadmNpQmthV1ptSUcxdlpHVXVYRzRnS2lCQWNHRnlZVzBnYldGNFRHVnVaM1JvVDJaTmIyNXZiV1Z5SUVseklHMWhlQ0JzWlc1bmRHZ2diMllnYlc5dWIyMWxjaTVjYmlBcUlFQnlaWFIxY200Z2UyNTFiV0psY24wZ2VDQmpiMjl5WkdsdVlYUmxJSFJ2SUhOMFlYSjBJSEJ5YVc1MGFXNW5JR0YwTGx4dUlDb3ZYRzVsZUhCdmNuUWdZMjl1YzNRZ2NISnBiblJNWldaMFQzSkRaVzUwWlhKbFpDQTlJQ2hjYmlBZ2VEb2diblZ0WW1WeUxDQjVPaUJ1ZFcxaVpYSXNJSGM2SUc1MWJXSmxjaXdnYURvZ2JuVnRZbVZ5TEZ4dUlDQm5PaUJEWVc1MllYTlNaVzVrWlhKcGJtZERiMjUwWlhoME1rUXNJSE02SUhOMGNtbHVaeXdnWTI5c2IzSTZJSE4wY21sdVp5QTlJSFZ1WkdWbWFXNWxaRU52Ykc5eUxGeHVJQ0J3YVhadmREb2diblZ0WW1WeUlEMGdNQ3dnYkdWbWRDQTlJR1poYkhObExDQjBjbUZ1YzNCaGNtVnVZM2xTWVhSbE9pQnVkVzFpWlhJZ1BTQXhMakFzWEc0Z0lITmxjR0Z5WVhSdmNqb2djM1J5YVc1bklEMGdKeWNzSUd4aGMzUTZJR0p2YjJ4bFlXNGdQU0JtWVd4elpTd2daSEpoZDFOMGVXeGxPaUJFY21GM1UzUjViR1VnUFNCRWNtRjNVM1I1YkdVdVkyeGhjM05wWXl3Z2JXRjRWMjl5WkRvZ2V5QmJhVzVrWlhnNklITjBjbWx1WjEwNklHNTFiV0psY2lCOUlEMGdlMzBzSUhkdmNtUkpaSGc2SUc1MWJXSmxjaUE5SURBc0lHZHlhV1JEWld4c09pQkVSeTVIY21sa1EyVnNiQ0I4SUc1MWJHd2dQU0J1ZFd4c0xDQnlaV1psY21WdVkyVlRaWEYxWlc1alpUb2djM1J5YVc1blcxMGdQU0JiWFN3Z2JXRjRUR1Z1WjNSb1QyWk5iMjV2YldWeU9pQnVkVzFpWlhJZ2ZDQnVkV3hzSUQwZ2JuVnNiQ2s2SUc1MWJXSmxjaUE5UGlCN1hHNGdJR2N1ZEdWNGRFRnNhV2R1SUQwZ0ozTjBZWEowSnp0Y2JpQWdiR1YwSUdOdmJHOXlVR0Z5ZENBOUlITXVjM1ZpYzNSeWFXNW5LREFwTzF4dUlDQnNaWFFnWjNKaGVWQmhjblFnUFNCc1lYTjBJRDhnSnljZ09pQnpaWEJoY21GMGIzSTdYRzRnSUdsbUlDaGtjbUYzVTNSNWJHVWdQVDA5SUVSeVlYZFRkSGxzWlM1TlUwRXBJSHRjYmlBZ0lDQm5jbUY1VUdGeWRDQTlJQ2NuTzF4dUlDQjlYRzRnSUd4bGRDQmpiMnh2Y2tOdlpHVWdQU0IwY25WbE8xeHVJQ0JzWlhRZ1kyOXRjR0Z5WlZkcGRHaERkWEp5Wlc1MElEMGdkSEoxWlR0Y2JpQWdiR1YwSUdocFoyaHNhV2RvZEVScFptWmxjbVZ1WTJVZ1BTQW5aR2xtWm1WeVpXNWpaU2M3WEc0Z0lHbG1JQ2dvWjNKcFpFTmxiR3dnSVQwZ2JuVnNiQ2tnSmlZZ0tHZHlhV1JEWld4c0xtTmxiR3d1WTI5c2RXMXVJQ0U5SUc1MWJHd3BLU0I3WEc0Z0lDQWdZMjlzYjNKRGIyUmxJRDBnWjNKcFpFTmxiR3d1WTJWc2JDNWpiMngxYlc0dWRHVnRjRnNuWTI5c2IzSXRZMjlrWlNkZElEOC9JSFJ5ZFdVN1hHNGdJQ0FnWTI5dGNHRnlaVmRwZEdoRGRYSnlaVzUwSUQwZ1ozSnBaRU5sYkd3dVkyVnNiQzVqYjJ4MWJXNHVkR1Z0Y0ZzblkyOXRjR0Z5WlMxM2FYUm9MV04xY25KbGJuUW5YU0EvUHlCMGNuVmxPMXh1SUNBZ0lHaHBaMmhzYVdkb2RFUnBabVpsY21WdVkyVWdQU0JuY21sa1EyVnNiQzVqWld4c0xtTnZiSFZ0Ymk1MFpXMXdXeWRvYVdkb2JHbG5hSFF0WkdsbVptVnlaVzVqWlNkZElEOC9JQ2RrYVdabVpYSmxibU5sSnp0Y2JseHVJQ0I5WEc0Z0lHTnZibk4wSUdOMWNuSmxiblJOYjI1dmJXVnlPaUJ6ZEhKcGJtY2dQU0J5WldabGNtVnVZMlZUWlhGMVpXNWpaVnQzYjNKa1NXUjRYVHRjYmlBZ2FXWWdLR052YlhCaGNtVlhhWFJvUTNWeWNtVnVkQ0FtSmlBb2NtVm1aWEpsYm1ObFUyVnhkV1Z1WTJVdWJHVnVaM1JvSUQ0Z01Da2dKaVlnS0docFoyaHNhV2RvZEVScFptWmxjbVZ1WTJVZ1BUMDlJQ2RrYVdabVpYSmxibU5sSnlrcElIdGNiaUFnSUNCMGNtRnVjM0JoY21WdVkzbFNZWFJsSUQwZ0tHTnZiRzl5VUdGeWRDQTlQU0JqZFhKeVpXNTBUVzl1YjIxbGNpa2dQeUF3TGpNZ09pQjBjbUZ1YzNCaGNtVnVZM2xTWVhSbE8xeHVJQ0I5WEc0Z0lHbG1JQ2hqYjIxd1lYSmxWMmwwYUVOMWNuSmxiblFnSmlZZ0tISmxabVZ5Wlc1alpWTmxjWFZsYm1ObExteGxibWQwYUNBK0lEQXBJQ1ltSUNob2FXZG9iR2xuYUhSRWFXWm1aWEpsYm1ObElEMDlQU0FuWlhGMVlXd25LU2tnZTF4dUlDQWdJSFJ5WVc1emNHRnlaVzVqZVZKaGRHVWdQU0FvWTI5c2IzSlFZWEowSUNFOUlHTjFjbkpsYm5STmIyNXZiV1Z5S1NBL0lEQXVNeUE2SUhSeVlXNXpjR0Z5Wlc1amVWSmhkR1U3WEc0Z0lIMWNiaUFnYVdZZ0tHMWhlRXhsYm1kMGFFOW1UVzl1YjIxbGNpQWhQU0J1ZFd4c0tTQjdYRzRnSUNBZ1kyOXNiM0pRWVhKMElEMGdiVzl1YjIxbGNsUnZVMmh2Y25SR2RXNWpkR2x2YmloamIyeHZjbEJoY25Rc0lHMWhlRXhsYm1kMGFFOW1UVzl1YjIxbGNpazdYRzRnSUgxY2JseHVYRzRnSUd4bGRDQjBaWGgwVTJsNlpUb2dZVzU1SUQwZ1p5NXRaV0Z6ZFhKbFZHVjRkQ2hqYjJ4dmNsQmhjblFnS3lCbmNtRjVVR0Z5ZENrN1hHNGdJR052Ym5OMElHbHVaR1Z1ZENBOUlEVTdYRzVjYmlBZ2JHVjBJRzFoZUVOdmJHOXlWR1Y0ZEZOcGVtVWdQU0JuTG0xbFlYTjFjbVZVWlhoMEtHTnZiRzl5VUdGeWRDa3VkMmxrZEdnN1hHNGdJR3hsZENCamIyeHZjbFJsZUhSVGFYcGxJRDBnWnk1dFpXRnpkWEpsVkdWNGRDaGpiMnh2Y2xCaGNuUXBMbmRwWkhSb08xeHVJQ0JqYjI1emRDQmtlU0E5SUdnZ0x5QXlJQzBnS0hSbGVIUlRhWHBsTG1admJuUkNiM1Z1WkdsdVowSnZlRUZ6WTJWdWRDQXJJSFJsZUhSVGFYcGxMbVp2Ym5SQ2IzVnVaR2x1WjBKdmVFUmxjMk5sYm5RcElDOGdNaUFySURFN1hHNGdJSFJsZUhSVGFYcGxJRDBnZEdWNGRGTnBlbVV1ZDJsa2RHZzdYRzRnSUdsbUlDaGtjbUYzVTNSNWJHVWdQVDA5SUVSeVlYZFRkSGxzWlM1TlUwRXBJSHRjYmlBZ0lDQnRZWGhEYjJ4dmNsUmxlSFJUYVhwbElEMGdiV0Y0VjI5eVpGdDNiM0prU1dSNFhUdGNiaUFnSUNCMFpYaDBVMmw2WlNBOUlHMWhlRmR2Y21SYmQyOXlaRWxrZUYwN1hHNGdJSDFjYmx4dUlDQm1kVzVqZEdsdmJpQmtjbUYzS0dSNE1Ub2diblZ0WW1WeUxDQmtlREk2SUc1MWJXSmxjaWs2SUhadmFXUWdlMXh1SUNBZ0lHTnZibk4wSUdSeVlYZERiMnh2Y2lBOUlHTnZiRzl5UTI5a1pTQS9JR052Ykc5eUlEb2dZbXhoWTJ0RGIyeHZjanRjYmlBZ0lDQm5MbVpwYkd4VGRIbHNaU0E5SUdSeVlYZERiMnh2Y2p0Y2JpQWdJQ0JuTG1kc2IySmhiRUZzY0doaElEMGdkSEpoYm5Od1lYSmxibU41VW1GMFpUdGNiaUFnSUNCcFppQW9aSEpoZDFOMGVXeGxJRDA5UFNCRWNtRjNVM1I1YkdVdVkyeGhjM05wWXlrZ2UxeHVJQ0FnSUNBZ1p5NW1hV3hzVkdWNGRDaGpiMnh2Y2xCaGNuUXNJSGdnS3lCa2VERXNJSGtnS3lCa2VTazdYRzRnSUNBZ0lDQm5MbVpwYkd4VGRIbHNaU0E5SUdkeVlYbERiMnh2Y2p0Y2JpQWdJQ0FnSUdjdVptbHNiRlJsZUhRb1ozSmhlVkJoY25Rc0lIZ2dLeUJrZURJc0lIa2dLeUJrZVNrN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoa2NtRjNVM1I1YkdVZ1BUMDlJRVJ5WVhkVGRIbHNaUzVOVTBFcElIdGNiaUFnSUNBZ0lHY3VabWxzYkZOMGVXeGxJRDBnWkhKaGQwTnZiRzl5TzF4dUlDQWdJQ0FnWnk1bWFXeHNWR1Y0ZENoamIyeHZjbEJoY25Rc0lIZ2dLeUJrZURFZ0t5QW9LRzFoZUZkdmNtUmJkMjl5WkVsa2VGMGdMU0JqYjJ4dmNsUmxlSFJUYVhwbEtTQXZJRElwTENCNUlDc2daSGtwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUdsbUlDaHNaV1owSUh4OElIUmxlSFJUYVhwbElENGdkeWtnZTF4dUlDQWdJR1J5WVhjb2FXNWtaVzUwTENCcGJtUmxiblFnS3lCdFlYaERiMnh2Y2xSbGVIUlRhWHBsS1R0Y2JpQWdJQ0J5WlhSMWNtNGdlQ0FySUcxaGVFTnZiRzl5VkdWNGRGTnBlbVVnS3lCbkxtMWxZWE4xY21WVVpYaDBLR2R5WVhsUVlYSjBLUzUzYVdSMGFEdGNibHh1SUNCOUlHVnNjMlVnZTF4dUlDQWdJR052Ym5OMElHUjRJRDBnS0hjZ0xTQjBaWGgwVTJsNlpTa2dMeUF5TzF4dUlDQWdJR1J5WVhjb1pIZ3NJR1I0SUNzZ2JXRjRRMjlzYjNKVVpYaDBVMmw2WlNrN1hHNGdJQ0FnY21WMGRYSnVJSGdnS3lCa2VDQXJJRzFoZUVOdmJHOXlWR1Y0ZEZOcGVtVTdYRzRnSUgxY2JuMDdYRzVjYmlKZGZRPT0iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHd1IGZyb20gJ3d1JztcbmltcG9ydCB7IFZlY3RvciB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IHZlY3Rvckxlbmd0aCwgdmVjdG9yRG90UHJvZHVjdCB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmltcG9ydCB7IEFtaW5vYWNpZHNQYWxldHRlcyB9IGZyb20gJy4uL2FtaW5vYWNpZHMnO1xuaW1wb3J0IHsgTnVjbGVvdGlkZXNQYWxldHRlcyB9IGZyb20gJy4uL251Y2xlb3RpZGVzJztcbmltcG9ydCB7IFVua25vd25TZXFQYWxldHRlcyB9IGZyb20gJy4uL3Vua25vd24nO1xuaW1wb3J0IHsgVW5pdHNIYW5kbGVyIH0gZnJvbSAnLi4vdXRpbHMvdW5pdHMtaGFuZGxlcic7XG47XG4vKiogU3RhdHMgb2Ygc2VxdWVuY2VzIHdpdGggc3BlY2lmaWVkIHNwbGl0dGVyIGZ1bmMsIHJldHVybnMgeyBmcmVxLCBzYW1lTGVuZ3RoIH0uXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gc2VxQ29sXG4gKiBAcGFyYW0ge251bWJlcn0gbWluTGVuZ3RoXG4gKiBAcGFyYW0ge1NwbGl0dGVyRnVuY30gc3BsaXR0ZXJcbiAqIEByZXR1cm4geyBTZXFDb2xTdGF0cyB9LCBzYW1lTGVuZ3RoOiBib29sZWFuIH0gc3RhdHMgb2YgY29sdW1uIHNlcXVlbmNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHMoc2VxQ29sLCBtaW5MZW5ndGgsIHNwbGl0dGVyKSB7XG4gICAgY29uc3QgZnJlcSA9IHt9O1xuICAgIGxldCBzYW1lTGVuZ3RoID0gdHJ1ZTtcbiAgICBsZXQgZmlyc3RMZW5ndGggPSBudWxsO1xuICAgIGZvciAoY29uc3Qgc2VxIG9mIHNlcUNvbC5jYXRlZ29yaWVzKSB7XG4gICAgICAgIGNvbnN0IG1TZXEgPSBzcGxpdHRlcihzZXEpO1xuICAgICAgICBpZiAoZmlyc3RMZW5ndGggPT0gbnVsbClcbiAgICAgICAgICAgIGZpcnN0TGVuZ3RoID0gbVNlcS5sZW5ndGg7XG4gICAgICAgIGVsc2UgaWYgKG1TZXEubGVuZ3RoICE9PSBmaXJzdExlbmd0aClcbiAgICAgICAgICAgIHNhbWVMZW5ndGggPSBmYWxzZTtcbiAgICAgICAgaWYgKG1TZXEubGVuZ3RoID49IG1pbkxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBtIG9mIG1TZXEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIShtIGluIGZyZXEpKVxuICAgICAgICAgICAgICAgICAgICBmcmVxW21dID0gMDtcbiAgICAgICAgICAgICAgICBmcmVxW21dICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgZnJlcTogZnJlcSwgc2FtZUxlbmd0aDogc2FtZUxlbmd0aCB9O1xufVxuZXhwb3J0IGNvbnN0IG1vbm9tZXJSZSA9IC9cXFsoXFx3KylcXF18KFxcdyl8KC0pL2c7XG4vKiogU3BsaXQgc2VxdWVuY2UgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgbW9ub21lcnMsIHNxdWFyZSBicmFja2V0cyBtdWx0aWNoYXIgbW9ub21lciBuYW1lcyBvciBnYXAgc3ltYm9sLlxuICogQHBhcmFtIHthbnl9IHNlcSBvYmplY3Qgd2l0aCBzZXF1ZW5jZVxuICogQHJldHVybiB7c3RyaW5nW119IGFycmF5IG9mIG1vbm9tZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdHRlckFzRmFzdGEoc2VxKSB7XG4gICAgcmV0dXJuIHd1KHNlcS50b1N0cmluZygpLm1hdGNoQWxsKG1vbm9tZXJSZSkpXG4gICAgICAgIC5tYXAoKG1hKSA9PiB7XG4gICAgICAgIGxldCBtUmVzO1xuICAgICAgICBjb25zdCBtID0gbWFbMF07XG4gICAgICAgIGlmIChtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIG1SZXMgPSBtYVsxXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG1SZXMgPSBtO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtUmVzO1xuICAgIH0pLnRvQXJyYXkoKTtcbn1cbi8qKiBHZXRzIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZSBieSBzZXBhcmF0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3JcbiAqIEBwYXJhbSBsaW1pdFxuICogQHJldHVybiB7U3BsaXR0ZXJGdW5jfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvciwgbGltaXQgPSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gKHNlcSkgPT4ge1xuICAgICAgICByZXR1cm4gc2VxLnNwbGl0KHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH07XG59XG5jb25zdCBoZWxtUmUgPSAvKFBFUFRJREUxfEROQTF8Uk5BMSlcXHsoW159XSspfS9nO1xuY29uc3QgaGVsbVBwMVJlID0gL1xcWyhbXlxcW1xcXV0rKV0vZztcbi8qKiBTcGxpdHMgSGVsbSBzdHJpbmcgdG8gbW9ub21lcnMsIGJ1dCBkb2VzIG5vdCByZXBsYWNlIG1vbm9tZXIgbmFtZXMgdG8gb3RoZXIgbm90YXRpb24gKGUuZy4gZm9yIFJOQSkuXG4gKiBPbmx5IGZvciBsaW5lYXIgcG9seW1lcnMsIGRvZXMgbm90IHNwbGl0IFJOQSBmb3Igcmlib3NlIGFuZCBwaG9zcGhhdGUgbW9ub21lcnMuXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VxIFNvdXJjZSBzdHJpbmcgb2YgSEVMTSBub3RhdGlvblxuICogQHJldHVybiB7c3RyaW5nW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdHRlckFzSGVsbShzZXEpIHtcbiAgICBoZWxtUmUubGFzdEluZGV4ID0gMDtcbiAgICBjb25zdCBlYSA9IGhlbG1SZS5leGVjKHNlcS50b1N0cmluZygpKTtcbiAgICBjb25zdCBpblNlcSA9IGVhID8gZWFbMl0gOiBudWxsO1xuICAgIGNvbnN0IG1tUG9zdFByb2Nlc3MgPSAobW0pID0+IHtcbiAgICAgICAgaGVsbVBwMVJlLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGNvbnN0IHBwMU0gPSBoZWxtUHAxUmUuZXhlYyhtbSk7XG4gICAgICAgIGlmIChwcDFNICYmIHBwMU0ubGVuZ3RoID49IDIpXG4gICAgICAgICAgICByZXR1cm4gcHAxTVsxXTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIG1tO1xuICAgIH07XG4gICAgY29uc3QgbW1MaXN0ID0gaW5TZXEgPyBpblNlcS5zcGxpdCgnLicpIDogW107XG4gICAgcmV0dXJuIG1tTGlzdC5tYXAobW1Qb3N0UHJvY2Vzcyk7XG59XG4vKiogR2V0IHNwbGl0dGVyIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZXMgdG8gbW9ub21lcnNcbiAqIEBwYXJhbSB7c3RyaW5nfSB1bml0c1xuICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvclxuICogQHBhcmFtIGxpbWl0XG4gKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGxpdHRlcih1bml0cywgc2VwYXJhdG9yLCBsaW1pdCA9IHVuZGVmaW5lZCkge1xuICAgIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovKSlcbiAgICAgICAgcmV0dXJuIHNwbGl0dGVyQXNGYXN0YTtcbiAgICBlbHNlIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJzZXBhcmF0b3JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi8pKVxuICAgICAgICByZXR1cm4gZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvciwgbGltaXQpO1xuICAgIGVsc2UgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovKSlcbiAgICAgICAgcmV0dXJuIHNwbGl0dGVyQXNIZWxtO1xuICAgIGVsc2VcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHVuaXRzICR7dW5pdHN9IC5gKTtcbiAgICAvLyBUT0RPOiBTcGxpdHRlciBmb3IgSEVMTVxufVxuLyoqIEdlbmVyYXRlIHNwbGl0dGVyIGZ1bmN0aW9uIGZvciBzZXF1ZW5jZSBjb2x1bW5cbiAqIEBwYXJhbSB7REcuQ29sdW1ufSBjb2xcbiAqIEByZXR1cm4ge1NwbGl0dGVyRnVuY30gU3BsaXR0ZXIgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNwbGl0dGVyRm9yQ29sdW1uKGNvbCkge1xuICAgIGlmIChjb2wuc2VtVHlwZSAhPT0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEdldCBzcGxpdHRlciBmb3Igc2VtVHlwZSBcIiR7REcuU0VNVFlQRS5NQUNST01PTEVDVUxFfVwiIG9ubHkuYCk7XG4gICAgY29uc3QgdW5pdHMgPSBjb2wuZ2V0VGFnKERHLlRBR1MuVU5JVFMpO1xuICAgIGNvbnN0IHNlcGFyYXRvciA9IGNvbC5nZXRUYWcoXCJzZXBhcmF0b3JcIiAvKiBUQUdTLnNlcGFyYXRvciAqLyk7XG4gICAgcmV0dXJuIGdldFNwbGl0dGVyKHVuaXRzLCBzZXBhcmF0b3IpO1xufVxuY29uc3QgbG9uZ01vbm9tZXJQYXJ0UmUgPSAvKFxcdyspL2c7XG4vKiogQ29udmVydCBsb25nIG1vbm9tZXIgbmFtZXMgdG8gc2hvcnQgb25lcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vbm9tZXJUb1Nob3J0KGFtaW5vLCBtYXhMZW5ndGhPZk1vbm9tZXIpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHNob3J0QW1pbm9NYXRjaCA9IGFtaW5vLm1hdGNoKGxvbmdNb25vbWVyUGFydFJlKTtcbiAgICBjb25zdCBuZWVkQWRkRG90cyA9IGFtaW5vLmxlbmd0aCA+IG1heExlbmd0aE9mTW9ub21lciB8fCAoKF9hID0gc2hvcnRBbWlub01hdGNoID09PSBudWxsIHx8IHNob3J0QW1pbm9NYXRjaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2hvcnRBbWlub01hdGNoLmxlbmd0aCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMCkgPiAxO1xuICAgIGNvbnN0IHNob3J0QW1pbm8gPSAoX2IgPSBzaG9ydEFtaW5vTWF0Y2ggPT09IG51bGwgfHwgc2hvcnRBbWlub01hdGNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzaG9ydEFtaW5vTWF0Y2hbMF0pICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6ICcgJztcbiAgICByZXR1cm4gIW5lZWRBZGREb3RzID8gc2hvcnRBbWlubyA6IHNob3J0QW1pbm8uc3Vic3RyaW5nKDAsIG1heExlbmd0aE9mTW9ub21lcikgKyAn4oCmJztcbn1cbi8qKiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFscGhhYmV0KGFscGhhYmV0KSB7XG4gICAgc3dpdGNoIChhbHBoYWJldCkge1xuICAgICAgICBjYXNlIFwiRE5BXCIgLyogQUxQSEFCRVQuRE5BICovOlxuICAgICAgICAgICAgcmV0dXJuIFVuaXRzSGFuZGxlci5EbmFGYXN0YUFscGhhYmV0O1xuICAgICAgICBjYXNlIFwiUk5BXCIgLyogQUxQSEFCRVQuUk5BICovOlxuICAgICAgICAgICAgcmV0dXJuIFVuaXRzSGFuZGxlci5SbmFGYXN0YUFscGhhYmV0O1xuICAgICAgICBjYXNlIFwiUFRcIiAvKiBBTFBIQUJFVC5QVCAqLzpcbiAgICAgICAgICAgIHJldHVybiBVbml0c0hhbmRsZXIuUGVwdGlkZUZhc3RhQWxwaGFiZXQ7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGFscGhhYmV0ICcke2FscGhhYmV0fScuYCk7XG4gICAgfVxufVxuLyoqIENhbGN1bGF0ZSBzaW1pbGFyaXR5IGluIGN1cnJlbnQgc2VxdWVuY2UgYW5kIGFscGhhYmV0LlxuICogQHBhcmFtIHtNb25vbWVyRnJlcXN9IGZyZXFcbiAqIEBwYXJhbSB7U2V0PHN0cmluZz59IGFscGhhYmV0XG4gKiBAcGFyYW0ge3N0cmluZ30gZ2FwU3ltYm9sXG4gKiBAcmV0dXJuIHtudW1iZXJ9IENvc2luZSBzaW1pbGFyaXR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbHBoYWJldFNpbWlsYXJpdHkoZnJlcSwgYWxwaGFiZXQsIGdhcFN5bWJvbCA9ICctJykge1xuICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0KFsuLi5uZXcgU2V0KE9iamVjdC5rZXlzKGZyZXEpKSwgLi4uYWxwaGFiZXRdKTtcbiAgICBrZXlzLmRlbGV0ZShnYXBTeW1ib2wpO1xuICAgIGNvbnN0IGZyZXFBID0gW107XG4gICAgY29uc3QgYWxwaGFiZXRBID0gW107XG4gICAgZm9yIChjb25zdCBtIG9mIGtleXMpIHtcbiAgICAgICAgZnJlcUEucHVzaChtIGluIGZyZXEgPyBmcmVxW21dIDogMCk7XG4gICAgICAgIGFscGhhYmV0QS5wdXNoKGFscGhhYmV0LmhhcyhtKSA/IDEgOiAwKTtcbiAgICB9XG4gICAgLyogVGhlcmUgd2VyZSBhIGZldyBpZGVhczogY2hpLXNxdWFyZWQsIHBlYXJzb24gY29ycmVsYXRpb24gKHZhcmlhbmNlPyksIHNjYWxhciBwcm9kdWN0ICovXG4gICAgY29uc3QgZnJlcVYgPSBuZXcgVmVjdG9yKGZyZXFBKTtcbiAgICBjb25zdCBhbHBoYWJldFYgPSBuZXcgVmVjdG9yKGFscGhhYmV0QSk7XG4gICAgcmV0dXJuIHZlY3RvckRvdFByb2R1Y3QoZnJlcVYsIGFscGhhYmV0VikgLyAodmVjdG9yTGVuZ3RoKGZyZXFWKSAqIHZlY3Rvckxlbmd0aChhbHBoYWJldFYpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RBbHBoYWJldChzdGF0cykge1xuICAgIGNvbnN0IGFscGhhYmV0Q2FuZGlkYXRlcyA9IFtcbiAgICAgICAgW1wiUFRcIiAvKiBBTFBIQUJFVC5QVCAqLywgVW5pdHNIYW5kbGVyLlBlcHRpZGVGYXN0YUFscGhhYmV0XSxcbiAgICAgICAgW1wiRE5BXCIgLyogQUxQSEFCRVQuRE5BICovLCBVbml0c0hhbmRsZXIuRG5hRmFzdGFBbHBoYWJldF0sXG4gICAgICAgIFtcIlJOQVwiIC8qIEFMUEhBQkVULlJOQSAqLywgVW5pdHNIYW5kbGVyLlJuYUZhc3RhQWxwaGFiZXRdLFxuICAgIF07XG4gICAgLy8gQ2FsY3VsYXRlIGxpa2VsaWhvb2RzIGZvciBhbHBoYWJldF9jYW5kaWRhdGVzXG4gICAgY29uc3QgYWxwaGFiZXRDYW5kaWRhdGVzU2ltID0gYWxwaGFiZXRDYW5kaWRhdGVzLm1hcCgoYykgPT4gZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KHN0YXRzLmZyZXEsIGNbMV0pKTtcbiAgICBjb25zdCBtYXhDb3MgPSBNYXRoLm1heCguLi5hbHBoYWJldENhbmRpZGF0ZXNTaW0pO1xuICAgIGNvbnN0IGFscGhhYmV0ID0gbWF4Q29zID4gMC42NSA/IGFscGhhYmV0Q2FuZGlkYXRlc1thbHBoYWJldENhbmRpZGF0ZXNTaW0uaW5kZXhPZihtYXhDb3MpXVswXSA6ICdVTic7XG4gICAgcmV0dXJuIGFscGhhYmV0O1xufVxuLyoqIFNlbGVjdHMgYSBzdWl0YWJsZSBwYWxldHRlIGJhc2VkIG9uIGNvbHVtbiBkYXRhXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gc2VxQ29sIENvbHVtbiB0byBsb29rIGZvciBhIHBhbGV0dGVcbiAqIEBwYXJhbSB7bnVtYmVyfSAgbWluTGVuZ3RoIG1pbmltdW0gbGVuZ3RoIG9mIHNlcXVlbmNlIHRvIGRldGVjdCBwYWxldHRlIChlbXB0eSBzdHJpbmdzIGFyZSBhbGxvd2VkKVxuICogQHJldHVybiB7U2VxUGFsZXR0ZX0gUGFsZXR0ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBhbHBoYWJldCBvZiB0aGUgc2VxdWVuY2VzIGluIHRoZSBjb2x1bW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2tVcFBhbGV0dGUoc2VxQ29sLCBtaW5MZW5ndGggPSA1KSB7XG4gICAgbGV0IGFscGhhYmV0O1xuICAgIGlmIChzZXFDb2wuc2VtVHlwZSA9PSBERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEUpIHtcbiAgICAgICAgY29uc3QgdWggPSBuZXcgVW5pdHNIYW5kbGVyKHNlcUNvbCk7XG4gICAgICAgIGFscGhhYmV0ID0gdWguYWxwaGFiZXQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBzdGF0cyA9IGdldFN0YXRzKHNlcUNvbCwgbWluTGVuZ3RoLCBzcGxpdHRlckFzRmFzdGEpO1xuICAgICAgICBhbHBoYWJldCA9IGRldGVjdEFscGhhYmV0KHN0YXRzKTtcbiAgICB9XG4gICAgY29uc3QgcmVzID0gZ2V0UGFsZXR0ZUJ5VHlwZShhbHBoYWJldCk7XG4gICAgcmV0dXJuIHJlcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWxldHRlQnlUeXBlKHBhbGV0dGVUeXBlKSB7XG4gICAgc3dpdGNoIChwYWxldHRlVHlwZSkge1xuICAgICAgICBjYXNlICdQVCc6XG4gICAgICAgICAgICByZXR1cm4gQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gICAgICAgIGNhc2UgJ05UJzpcbiAgICAgICAgY2FzZSAnRE5BJzpcbiAgICAgICAgY2FzZSAnUk5BJzpcbiAgICAgICAgICAgIHJldHVybiBOdWNsZW90aWRlc1BhbGV0dGVzLkNocm9tYXRvZ3JhbTtcbiAgICAgICAgLy8gb3RoZXJcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBVbmtub3duU2VxUGFsZXR0ZXMuQ29sb3I7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIHBpY2tVcFNlcUNvbChkZikge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCBzZW1UeXBlQ29sTGlzdCA9IGRmLmNvbHVtbnMuYnlTZW1UeXBlQWxsKERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSk7XG4gICAgbGV0IHJlc0NvbCA9IChfYSA9IHNlbVR5cGVDb2xMaXN0LmZpbmQoKGNvbCkgPT4ge1xuICAgICAgICBjb25zdCB1bml0cyA9IGNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gICAgICAgIHJldHVybiB1bml0cyA/IHVuaXRzLmluZGV4T2YoJ01TQScpICE9PSAtMSA6IGZhbHNlO1xuICAgIH0pKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsO1xuICAgIGlmICghcmVzQ29sICYmIHNlbVR5cGVDb2xMaXN0Lmxlbmd0aCA+IDApXG4gICAgICAgIHJlc0NvbCA9IHNlbVR5cGVDb2xMaXN0WzBdO1xuICAgIHJldHVybiByZXNDb2w7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liV0ZqY205dGIyeGxZM1ZzWlM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbTFoWTNKdmJXOXNaV04xYkdVdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJSVUVzVDBGQlR5eExRVUZMTEVWQlFVVXNUVUZCVFN4cFFrRkJhVUlzUTBGQlF6dEJRVU4wUXl4UFFVRlBMRVZCUVVVc1RVRkJUU3hKUVVGSkxFTkJRVU03UVVGRmNFSXNUMEZCVHl4RlFVRkRMRTFCUVUwc1JVRkJReXhOUVVGTkxHbEVRVUZwUkN4RFFVRkRPMEZCUTNaRkxFOUJRVThzUlVGQlF5eFpRVUZaTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVU1zVFVGQlRTeHBSRUZCYVVRc1EwRkJRenRCUVVVdlJpeFBRVUZQTEVWQlFXRXNhMEpCUVd0Q0xFVkJRVU1zVFVGQlRTeGxRVUZsTEVOQlFVTTdRVUZETjBRc1QwRkJUeXhGUVVGakxHMUNRVUZ0UWl4RlFVRkRMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZEYUVVc1QwRkJUeXhGUVVGRExHdENRVUZyUWl4RlFVRkRMRTFCUVUwc1dVRkJXU3hEUVVGRE8wRkJRemxETEU5QlFVOHNSVUZCUXl4WlFVRlpMRVZCUVVNc1RVRkJUU3gzUWtGQmQwSXNRMEZCUXp0QlFUUkNia1FzUTBGQlF6dEJRVTFHT3pzN096dEhRVXRITzBGQlEwZ3NUVUZCVFN4VlFVRlZMRkZCUVZFc1EwRkJReXhOUVVGcFFpeEZRVUZGTEZOQlFXbENMRVZCUVVVc1VVRkJjMEk3U1VGRGJrWXNUVUZCVFN4SlFVRkpMRWRCUVRSQ0xFVkJRVVVzUTBGQlF6dEpRVU42UXl4SlFVRkpMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU03U1VGRGRFSXNTVUZCU1N4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRE8wbEJSWFpDTEV0QlFVc3NUVUZCVFN4SFFVRkhMRWxCUVVrc1RVRkJUU3hEUVVGRExGVkJRVlVzUlVGQlJUdFJRVU51UXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGTTBJc1NVRkJTU3hYUVVGWExFbEJRVWtzU1VGQlNUdFpRVU55UWl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dGhRVU4yUWl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFdEJRVXNzVjBGQlZ6dFpRVU5zUXl4VlFVRlZMRWRCUVVjc1MwRkJTeXhEUVVGRE8xRkJSWEpDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hUUVVGVExFVkJRVVU3V1VGRE5VSXNTMEZCU3l4TlFVRk5MRU5CUVVNc1NVRkJTU3hKUVVGSkxFVkJRVVU3WjBKQlEzQkNMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTTdiMEpCUTJRc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRaQ3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMkZCUTJRN1UwRkRSanRMUVVOR08wbEJRMFFzVDBGQlR5eEZRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1ZVRkJWU3hGUVVGRkxGVkJRVlVzUlVGQlF5eERRVUZETzBGQlF6bERMRU5CUVVNN1FVRkZSQ3hOUVVGTkxFTkJRVU1zVFVGQlRTeFRRVUZUTEVkQlFWY3NjVUpCUVhGQ0xFTkJRVU03UVVGRmRrUTdPenRIUVVkSE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdWQlFXVXNRMEZCUXl4SFFVRlJPMGxCUTNSRExFOUJRVThzUlVGQlJTeERRVUZ0UWl4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zVVVGQlVTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMU5CUXpWRUxFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFXOUNMRVZCUVVVc1JVRkJSVHRSUVVNMVFpeEpRVUZKTEVsQlFWa3NRMEZCUXp0UlFVTnFRaXhOUVVGTkxFTkJRVU1zUjBGQlZ5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRlRUlzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSVHRaUVVOb1FpeEpRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMlE3WVVGQlRUdFpRVU5NTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRWanRSUVVORUxFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRGFrSXNRMEZCUXp0QlFVVkVPenM3TzBkQlNVYzdRVUZEU0N4TlFVRk5MRlZCUVZVc2QwSkJRWGRDTEVOQlFVTXNVMEZCYVVJc1JVRkJSU3hSUVVFMFFpeFRRVUZUTzBsQlF5OUdMRTlCUVU4c1EwRkJReXhIUVVGWExFVkJRVVVzUlVGQlJUdFJRVU55UWl4UFFVRlBMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zVTBGQlV5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUTNKRExFTkJRVU1zUTBGQlF6dEJRVU5LTEVOQlFVTTdRVUZGUkN4TlFVRk5MRTFCUVUwc1IwRkJWeXhwUTBGQmFVTXNRMEZCUXp0QlFVTjZSQ3hOUVVGTkxGTkJRVk1zUjBGQlZ5eG5Ra0ZCWjBJc1EwRkJRenRCUVVVelF6czdPenRIUVVsSE8wRkJRMGdzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4SFFVRlJPMGxCUTNKRExFMUJRVTBzUTBGQlF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTNKQ0xFMUJRVTBzUlVGQlJTeEhRVUV5UWl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXl4RFFVRkRPMGxCUXk5RUxFMUJRVTBzUzBGQlN5eEhRVUZyUWl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJSUzlETEUxQlFVMHNZVUZCWVN4SFFVRkhMRU5CUVVNc1JVRkJWU3hGUVVGVkxFVkJRVVU3VVVGRE0wTXNVMEZCVXl4RFFVRkRMRk5CUVZNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGVFSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTm9ReXhKUVVGSkxFbEJRVWtzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNN1dVRkRNVUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN08xbEJSV1lzVDBGQlR5eEZRVUZGTEVOQlFVTTdTVUZEWkN4RFFVRkRMRU5CUVVNN1NVRkZSaXhOUVVGTkxFMUJRVTBzUjBGQllTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVOMlJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU03UVVGRGJrTXNRMEZCUXp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hWUVVGVkxGZEJRVmNzUTBGQlF5eExRVUZoTEVWQlFVVXNVMEZCYVVJc1JVRkJSU3hSUVVFMFFpeFRRVUZUTzBsQlEycEhMRWxCUVVrc1MwRkJTeXhEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETEZWQlFWVXNPRUpCUVdkQ08xRkJRMmhFTEU5QlFVOHNaVUZCWlN4RFFVRkRPMU5CUTNCQ0xFbEJRVWtzUzBGQlN5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRlZCUVZVc2MwTkJRVzlDTzFGQlEzcEVMRTlCUVU4c2QwSkJRWGRDTEVOQlFVTXNVMEZCVXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xTkJReTlETEVsQlFVa3NTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGVkJRVlVzTkVKQlFXVTdVVUZEY0VRc1QwRkJUeXhqUVVGakxFTkJRVU03TzFGQlJYUkNMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zYjBKQlFXOUNMRXRCUVVzc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRmFrUXNNRUpCUVRCQ08wRkJRelZDTEVOQlFVTTdRVUZGUkRzN08wZEJSMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNiMEpCUVc5Q0xFTkJRVU1zUjBGQll6dEpRVU5xUkN4SlFVRkpMRWRCUVVjc1EwRkJReXhQUVVGUExFdEJRVXNzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4aFFVRmhPMUZCUXpGRExFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNOa0pCUVRaQ0xFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNZVUZCWVN4VFFVRlRMRU5CUVVNc1EwRkJRenRKUVVWc1JpeE5RVUZOTEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkRlRU1zVFVGQlRTeFRRVUZUTEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc2EwTkJRV2RDTEVOQlFVTTdTVUZETjBNc1QwRkJUeXhYUVVGWExFTkJRVU1zUzBGQlN5eEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMEZCUTNaRExFTkJRVU03UVVGRlJDeE5RVUZOTEdsQ1FVRnBRaXhIUVVGWExGRkJRVkVzUTBGQlF6dEJRVVV6UXl3clEwRkJLME03UVVGREwwTXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhMUVVGaExFVkJRVVVzYTBKQlFUQkNPenRKUVVOMFJTeE5RVUZOTEdWQlFXVXNSMEZCTkVJc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8wbEJRMmhHTEUxQlFVMHNWMEZCVnl4SFFVRlpMRXRCUVVzc1EwRkJReXhOUVVGTkxFZEJRVWNzYTBKQlFXdENMRWxCUVVrc1EwRkJReXhOUVVGQkxHVkJRV1VzWVVGQlppeGxRVUZsTEhWQ1FVRm1MR1ZCUVdVc1EwRkJSU3hOUVVGTkxHMURRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOeVJ5eE5RVUZOTEZWQlFWVXNSMEZCUnl4TlFVRkJMR1ZCUVdVc1lVRkJaaXhsUVVGbExIVkNRVUZtTEdWQlFXVXNRMEZCUnl4RFFVRkRMRU5CUVVNc2JVTkJRVWtzUjBGQlJ5eERRVUZETzBsQlF5OURMRTlCUVU4c1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1ZVRkJWU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdRVUZEZGtZc1EwRkJRenRCUVVWRUxFMUJRVTA3UVVGRFRpeE5RVUZOTEZWQlFWVXNWMEZCVnl4RFFVRkRMRkZCUVd0Q08wbEJRelZETEZGQlFWRXNVVUZCVVN4RlFVRkZPMUZCUTJ4Q08xbEJRMFVzVDBGQlR5eFpRVUZaTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU03VVVGRGRrTTdXVUZEUlN4UFFVRlBMRmxCUVZrc1EwRkJReXhuUWtGQlowSXNRMEZCUXp0UlFVTjJRenRaUVVORkxFOUJRVThzV1VGQldTeERRVUZETEc5Q1FVRnZRaXhEUVVGRE8xRkJRek5ETzFsQlEwVXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXg1UWtGQmVVSXNVVUZCVVN4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVONFJEdEJRVU5JTEVOQlFVTTdRVUZGUkRzN096czdSMEZMUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3h4UWtGQmNVSXNRMEZCUXl4SlFVRnJRaXhGUVVGRkxGRkJRWEZDTEVWQlFVVXNXVUZCYjBJc1IwRkJSenRKUVVOMFJ5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJVeXhEUVVGRExFZEJRVWNzU1VGQlNTeEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVkQlFVY3NVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVNelJTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wbEJSWFpDTEUxQlFVMHNTMEZCU3l4SFFVRmhMRVZCUVVVc1EwRkJRenRKUVVNelFpeE5RVUZOTEZOQlFWTXNSMEZCWVN4RlFVRkZMRU5CUVVNN1NVRkRMMElzUzBGQlN5eE5RVUZOTEVOQlFVTXNTVUZCU1N4SlFVRkpMRVZCUVVVN1VVRkRjRUlzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzQkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVONlF6dEpRVU5FTERCR1FVRXdSanRKUVVNeFJpeE5RVUZOTEV0QlFVc3NSMEZCVnl4SlFVRkpMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dEpRVU40UXl4TlFVRk5MRk5CUVZNc1IwRkJWeXhKUVVGSkxFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0SlFVTm9SQ3hQUVVGUExHZENRVUZuUWl4RFFVRkRMRXRCUVVzc1JVRkJSU3hUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhaUVVGWkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTVSaXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4TFFVRnJRanRKUVVNdlF5eE5RVUZOTEd0Q1FVRnJRaXhIUVVFMFFqdFJRVU5zUkN4NVFrRkJZeXhaUVVGWkxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNN1VVRkRhRVFzTWtKQlFXVXNXVUZCV1N4RFFVRkRMR2RDUVVGblFpeERRVUZETzFGQlF6ZERMREpDUVVGbExGbEJRVmtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJRenRMUVVNNVF5eERRVUZETzBsQlJVWXNaMFJCUVdkRU8wbEJRMmhFTEUxQlFVMHNjVUpCUVhGQ0xFZEJRV0VzYTBKQlFXdENMRU5CUVVNc1IwRkJSeXhEUVVNMVJDeERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTJ4RUxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXh4UWtGQmNVSXNRMEZCUXl4RFFVRkRPMGxCUTJ4RUxFMUJRVTBzVVVGQlVTeEhRVUZITEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExHdENRVUZyUWl4RFFVRkRMSEZDUVVGeFFpeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1NVRkRja2NzVDBGQlR5eFJRVUZSTEVOQlFVTTdRVUZEYkVJc1EwRkJRenRCUVVWRU96czdPMGRCU1VjN1FVRkRTQ3hOUVVGTkxGVkJRVlVzWVVGQllTeERRVUZETEUxQlFXbENMRVZCUVVVc1dVRkJiMElzUTBGQlF6dEpRVU53UlN4SlFVRkpMRkZCUVdkQ0xFTkJRVU03U1VGRGNrSXNTVUZCU1N4TlFVRk5MRU5CUVVNc1QwRkJUeXhKUVVGSkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RlFVRkZPMUZCUXpsRExFMUJRVTBzUlVGQlJTeEhRVUZwUWl4SlFVRkpMRmxCUVZrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU5zUkN4UlFVRlJMRWRCUVVjc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF6dExRVU40UWp0VFFVRk5PMUZCUTB3c1RVRkJUU3hMUVVGTExFZEJRV2RDTEZGQlFWRXNRMEZCUXl4TlFVRk5MRVZCUVVVc1UwRkJVeXhGUVVGRkxHVkJRV1VzUTBGQlF5eERRVUZETzFGQlEzaEZMRkZCUVZFc1IwRkJSeXhqUVVGakxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdTMEZEYkVNN1NVRkZSQ3hOUVVGTkxFZEJRVWNzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEpRVU4yUXl4UFFVRlBMRWRCUVVjc1EwRkJRenRCUVVOaUxFTkJRVU03UVVGRlJDeE5RVUZOTEZWQlFWVXNaMEpCUVdkQ0xFTkJRVU1zVjBGQmJVSTdTVUZEYkVRc1VVRkJVU3hYUVVGWExFVkJRVVU3VVVGRGNrSXNTMEZCU3l4SlFVRkpPMWxCUTFBc1QwRkJUeXhyUWtGQmEwSXNRMEZCUXl4VlFVRlZMRU5CUVVNN1VVRkRka01zUzBGQlN5eEpRVUZKTEVOQlFVTTdVVUZEVml4TFFVRkxMRXRCUVVzc1EwRkJRenRSUVVOWUxFdEJRVXNzUzBGQlN6dFpRVU5TTEU5QlFVOHNiVUpCUVcxQ0xFTkJRVU1zV1VGQldTeERRVUZETzFGQlEzaERMRkZCUVZFN1VVRkRWanRaUVVORkxFOUJRVThzYTBKQlFXdENMRU5CUVVNc1MwRkJTeXhEUVVGRE8wdEJRMnBETzBGQlEwZ3NRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3haUVVGWkxFTkJRVU1zUlVGQlowSTdPMGxCUXpORExFMUJRVTBzWTBGQll5eEhRVUZITEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNN1NVRkRla1VzU1VGQlNTeE5RVUZOTEVkQlFYRkNMRTFCUVVFc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZPMUZCUTNwRUxFMUJRVTBzUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVTjRReXhQUVVGUExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRE8wbEJRM0pFTEVOQlFVTXNRMEZCUXl4dFEwRkJTU3hKUVVGSkxFTkJRVU03U1VGRFdDeEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMR05CUVdNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF6dFJRVU4wUXl4TlFVRk5MRWRCUVVjc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6ZENMRTlCUVU4c1RVRkJUU3hEUVVGRE8wRkJRMmhDTEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdLaUJoY3lCbmNtOXJJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzluY205ckp6dGNibWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnS2lCaGN5QkVSeUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2Wkdjbk8xeHVhVzF3YjNKMElIZDFJR1p5YjIwZ0ozZDFKenRjYmx4dWFXMXdiM0owSUh0V1pXTjBiM0o5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN2RtVmpkRzl5VEdWdVozUm9MQ0IyWldOMGIzSkViM1JRY205a2RXTjBmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkyWldOMGIzSXRiM0JsY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTFObGNWQmhiR1YwZEdWOUlHWnliMjBnSnk0dUwzTmxjUzF3WVd4bGRIUmxjeWM3WEc1cGJYQnZjblFnZTBGdGFXNXZZV05wWkhNc0lFRnRhVzV2WVdOcFpITlFZV3hsZEhSbGMzMGdabkp2YlNBbkxpNHZZVzFwYm05aFkybGtjeWM3WEc1cGJYQnZjblFnZTA1MVkyeGxiM1JwWkdWekxDQk9kV05zWlc5MGFXUmxjMUJoYkdWMGRHVnpmU0JtY205dElDY3VMaTl1ZFdOc1pXOTBhV1JsY3ljN1hHNXBiWEJ2Y25RZ2UxVnVhMjV2ZDI1VFpYRlFZV3hsZEhSbGMzMGdabkp2YlNBbkxpNHZkVzVyYm05M2JpYzdYRzVwYlhCdmNuUWdlMVZ1YVhSelNHRnVaR3hsY24wZ1puSnZiU0FuTGk0dmRYUnBiSE12ZFc1cGRITXRhR0Z1Wkd4bGNpYzdYRzVjYmx4dUx5b3FJR1Z1ZFcwZ2RIbHdaU0IwYnlCemFXMXdiR2xtZVNCelpYUjBhVzVuSUZ3aWRYTmxjaTFtY21sbGJtUnNlVndpSUc1dmRHRjBhVzl1SUdsbUlHNWxZMlZ6YzJGeWVTQXFMMXh1Wlhod2IzSjBJR052Ym5OMElHVnVkVzBnVGs5VVFWUkpUMDRnZTF4dUlDQkdRVk5VUVNBOUlDZG1ZWE4wWVNjc1hHNGdJRk5GVUVGU1FWUlBVaUE5SUNkelpYQmhjbUYwYjNJbkxGeHVJQ0JJUlV4TklEMGdKMmhsYkcwbkxGeHVmVnh1WEc1bGVIQnZjblFnWTI5dWMzUWdaVzUxYlNCQlRFbEhUazFGVGxRZ2UxeHVJQ0JUUlZGZlRWTkJJRDBnSjFORlVTNU5VMEVuTEZ4dUlDQlRSVkVnUFNBblUwVlJKeXhjYm4xY2JseHVaWGh3YjNKMElHTnZibk4wSUdWdWRXMGdRVXhRU0VGQ1JWUWdlMXh1SUNCRVRrRWdQU0FuUkU1Qkp5eGNiaUFnVWs1QklEMGdKMUpPUVNjc1hHNGdJRkJVSUQwZ0oxQlVKeXhjYmlBZ1ZVNGdQU0FuVlU0bkxGeHVmVnh1WEc1bGVIQnZjblFnWTI5dWMzUWdaVzUxYlNCVVFVZFRJSHRjYmlBZ1lXeHBaMjVsWkNBOUlDZGhiR2xuYm1Wa0p5eGNiaUFnWVd4d2FHRmlaWFFnUFNBbllXeHdhR0ZpWlhRbkxGeHVJQ0JoYkhCb1lXSmxkRk5wZW1VZ1BTQW5MbUZzY0doaFltVjBVMmw2WlNjc1hHNGdJR0ZzY0doaFltVjBTWE5OZFd4MGFXTm9ZWElnUFNBbkxtRnNjR2hoWW1WMFNYTk5kV3gwYVdOb1lYSW5MRnh1SUNCelpYQmhjbUYwYjNJZ1BTQW5jMlZ3WVhKaGRHOXlKeXhjYm4wN1hHNWNibVY0Y0c5eWRDQjBlWEJsSUZObGNVTnZiRk4wWVhSeklEMGdleUJtY21WeE9pQk5iMjV2YldWeVJuSmxjWE1zSUhOaGJXVk1aVzVuZEdnNklHSnZiMnhsWVc0Z2ZWeHVaWGh3YjNKMElIUjVjR1VnVTNCc2FYUjBaWEpHZFc1aklEMGdLSE5sY1RvZ2MzUnlhVzVuS1NBOVBpQnpkSEpwYm1kYlhUdGNibVY0Y0c5eWRDQjBlWEJsSUUxdmJtOXRaWEpHY21WeGN5QTlJSHNnVzIwNklITjBjbWx1WjEwNklHNTFiV0psY2lCOU8xeHVYRzR2S2lvZ1UzUmhkSE1nYjJZZ2MyVnhkV1Z1WTJWeklIZHBkR2dnYzNCbFkybG1hV1ZrSUhOd2JHbDBkR1Z5SUdaMWJtTXNJSEpsZEhWeWJuTWdleUJtY21WeExDQnpZVzFsVEdWdVozUm9JSDB1WEc0Z0tpQkFjR0Z5WVcwZ2UwUkhMa052YkhWdGJuMGdjMlZ4UTI5c1hHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdiV2x1VEdWdVozUm9YRzRnS2lCQWNHRnlZVzBnZTFOd2JHbDBkR1Z5Um5WdVkzMGdjM0JzYVhSMFpYSmNiaUFxSUVCeVpYUjFjbTRnZXlCVFpYRkRiMnhUZEdGMGN5QjlMQ0J6WVcxbFRHVnVaM1JvT2lCaWIyOXNaV0Z1SUgwZ2MzUmhkSE1nYjJZZ1kyOXNkVzF1SUhObGNYVmxibU5sYzF4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwVTNSaGRITW9jMlZ4UTI5c09pQkVSeTVEYjJ4MWJXNHNJRzFwYmt4bGJtZDBhRG9nYm5WdFltVnlMQ0J6Y0d4cGRIUmxjam9nVTNCc2FYUjBaWEpHZFc1aktUb2dVMlZ4UTI5c1UzUmhkSE1nZTF4dUlDQmpiMjV6ZENCbWNtVnhPaUI3SUZ0dE9pQnpkSEpwYm1kZE9pQnVkVzFpWlhJZ2ZTQTlJSHQ5TzF4dUlDQnNaWFFnYzJGdFpVeGxibWQwYUNBOUlIUnlkV1U3WEc0Z0lHeGxkQ0JtYVhKemRFeGxibWQwYUNBOUlHNTFiR3c3WEc1Y2JpQWdabTl5SUNoamIyNXpkQ0J6WlhFZ2IyWWdjMlZ4UTI5c0xtTmhkR1ZuYjNKcFpYTXBJSHRjYmlBZ0lDQmpiMjV6ZENCdFUyVnhJRDBnYzNCc2FYUjBaWElvYzJWeEtUdGNibHh1SUNBZ0lHbG1JQ2htYVhKemRFeGxibWQwYUNBOVBTQnVkV3hzS1Z4dUlDQWdJQ0FnWm1seWMzUk1aVzVuZEdnZ1BTQnRVMlZ4TG14bGJtZDBhRHRjYmlBZ0lDQmxiSE5sSUdsbUlDaHRVMlZ4TG14bGJtZDBhQ0FoUFQwZ1ptbHljM1JNWlc1bmRHZ3BYRzRnSUNBZ0lDQnpZVzFsVEdWdVozUm9JRDBnWm1Gc2MyVTdYRzVjYmlBZ0lDQnBaaUFvYlZObGNTNXNaVzVuZEdnZ1BqMGdiV2x1VEdWdVozUm9LU0I3WEc0Z0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUcwZ2IyWWdiVk5sY1NrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvSVNodElHbHVJR1p5WlhFcEtWeHVJQ0FnSUNBZ0lDQWdJR1p5WlhGYmJWMGdQU0F3TzF4dUlDQWdJQ0FnSUNCbWNtVnhXMjFkSUNzOUlERTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCN1puSmxjVG9nWm5KbGNTd2djMkZ0WlV4bGJtZDBhRG9nYzJGdFpVeGxibWQwYUgwN1hHNTlYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQnRiMjV2YldWeVVtVTZJRkpsWjBWNGNDQTlJQzljWEZzb1hGeDNLeWxjWEYxOEtGeGNkeWw4S0MwcEwyYzdYRzVjYmk4cUtpQlRjR3hwZENCelpYRjFaVzVqWlNCbWIzSWdjMmx1WjJ4bElHTm9ZWEpoWTNSbGNpQnRiMjV2YldWeWN5d2djM0YxWVhKbElHSnlZV05yWlhSeklHMTFiSFJwWTJoaGNpQnRiMjV2YldWeUlHNWhiV1Z6SUc5eUlHZGhjQ0J6ZVcxaWIyd3VYRzRnS2lCQWNHRnlZVzBnZTJGdWVYMGdjMlZ4SUc5aWFtVmpkQ0IzYVhSb0lITmxjWFZsYm1ObFhHNGdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZGJYWDBnWVhKeVlYa2diMllnYlc5dWIyMWxjbk5jYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlITndiR2wwZEdWeVFYTkdZWE4wWVNoelpYRTZJR0Z1ZVNrNklITjBjbWx1WjF0ZElIdGNiaUFnY21WMGRYSnVJSGQxUEZKbFowVjRjRTFoZEdOb1FYSnlZWGsrS0hObGNTNTBiMU4wY21sdVp5Z3BMbTFoZEdOb1FXeHNLRzF2Ym05dFpYSlNaU2twWEc0Z0lDQWdMbTFoY0Nnb2JXRTZJRkpsWjBWNGNFMWhkR05vUVhKeVlYa3BJRDArSUh0Y2JpQWdJQ0FnSUd4bGRDQnRVbVZ6T2lCemRISnBibWM3WEc0Z0lDQWdJQ0JqYjI1emRDQnRPaUJ6ZEhKcGJtY2dQU0J0WVZzd1hUdGNiaUFnSUNBZ0lHbG1JQ2h0TG14bGJtZDBhQ0ErSURFcElIdGNiaUFnSUNBZ0lDQWdiVkpsY3lBOUlHMWhXekZkTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnYlZKbGN5QTlJRzA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdiVkpsY3p0Y2JpQWdJQ0I5S1M1MGIwRnljbUY1S0NrN1hHNTlYRzVjYmk4cUtpQkhaWFJ6SUcxbGRHaHZaQ0IwYnlCemNHeHBkQ0J6WlhGMVpXNWpaU0JpZVNCelpYQmhjbUYwYjNKY2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnpaWEJoY21GMGIzSmNiaUFxSUVCd1lYSmhiU0JzYVcxcGRGeHVJQ29nUUhKbGRIVnliaUI3VTNCc2FYUjBaWEpHZFc1amZWeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFUzQnNhWFIwWlhKWGFYUm9VMlZ3WVhKaGRHOXlLSE5sY0dGeVlYUnZjam9nYzNSeWFXNW5MQ0JzYVcxcGREb2diblZ0WW1WeUlId2dkVzVrWldacGJtVmtJRDBnZFc1a1pXWnBibVZrS1RvZ1UzQnNhWFIwWlhKR2RXNWpJSHRjYmlBZ2NtVjBkWEp1SUNoelpYRTZJSE4wY21sdVp5a2dQVDRnZTF4dUlDQWdJSEpsZEhWeWJpQnpaWEV1YzNCc2FYUW9jMlZ3WVhKaGRHOXlMQ0JzYVcxcGRDazdYRzRnSUgwN1hHNTlYRzVjYm1OdmJuTjBJR2hsYkcxU1pUb2dVbVZuUlhod0lEMGdMeWhRUlZCVVNVUkZNWHhFVGtFeGZGSk9RVEVwWEZ4N0tGdGVmVjByS1gwdlp6dGNibU52Ym5OMElHaGxiRzFRY0RGU1pUb2dVbVZuUlhod0lEMGdMMXhjV3loYlhseGNXMXhjWFYwcktWMHZaenRjYmx4dUx5b3FJRk53YkdsMGN5QklaV3h0SUhOMGNtbHVaeUIwYnlCdGIyNXZiV1Z5Y3l3Z1luVjBJR1J2WlhNZ2JtOTBJSEpsY0d4aFkyVWdiVzl1YjIxbGNpQnVZVzFsY3lCMGJ5QnZkR2hsY2lCdWIzUmhkR2x2YmlBb1pTNW5MaUJtYjNJZ1VrNUJLUzVjYmlBcUlFOXViSGtnWm05eUlHeHBibVZoY2lCd2IyeDViV1Z5Y3l3Z1pHOWxjeUJ1YjNRZ2MzQnNhWFFnVWs1QklHWnZjaUJ5YVdKdmMyVWdZVzVrSUhCb2IzTndhR0YwWlNCdGIyNXZiV1Z5Y3k1Y2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQnpaWEVnVTI5MWNtTmxJSE4wY21sdVp5QnZaaUJJUlV4TklHNXZkR0YwYVc5dVhHNGdLaUJBY21WMGRYSnVJSHR6ZEhKcGJtZGJYWDFjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlITndiR2wwZEdWeVFYTklaV3h0S0hObGNUb2dZVzU1S1RvZ2MzUnlhVzVuVzEwZ2UxeHVJQ0JvWld4dFVtVXViR0Z6ZEVsdVpHVjRJRDBnTUR0Y2JpQWdZMjl1YzNRZ1pXRTZJRkpsWjBWNGNFVjRaV05CY25KaGVTQjhJRzUxYkd3Z1BTQm9aV3h0VW1VdVpYaGxZeWh6WlhFdWRHOVRkSEpwYm1jb0tTazdYRzRnSUdOdmJuTjBJR2x1VTJWeE9pQnpkSEpwYm1jZ2ZDQnVkV3hzSUQwZ1pXRWdQeUJsWVZzeVhTQTZJRzUxYkd3N1hHNWNiaUFnWTI5dWMzUWdiVzFRYjNOMFVISnZZMlZ6Y3lBOUlDaHRiVG9nYzNSeWFXNW5LVG9nYzNSeWFXNW5JRDArSUh0Y2JpQWdJQ0JvWld4dFVIQXhVbVV1YkdGemRFbHVaR1Y0SUQwZ01EdGNiaUFnSUNCamIyNXpkQ0J3Y0RGTklEMGdhR1ZzYlZCd01WSmxMbVY0WldNb2JXMHBPMXh1SUNBZ0lHbG1JQ2h3Y0RGTklDWW1JSEJ3TVUwdWJHVnVaM1JvSUQ0OUlESXBYRzRnSUNBZ0lDQnlaWFIxY200Z2NIQXhUVnN4WFR0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCeVpYUjFjbTRnYlcwN1hHNGdJSDA3WEc1Y2JpQWdZMjl1YzNRZ2JXMU1hWE4wT2lCemRISnBibWRiWFNBOUlHbHVVMlZ4SUQ4Z2FXNVRaWEV1YzNCc2FYUW9KeTRuS1NBNklGdGRPMXh1SUNCeVpYUjFjbTRnYlcxTWFYTjBMbTFoY0NodGJWQnZjM1JRY205alpYTnpLVHRjYm4xY2JseHVMeW9xSUVkbGRDQnpjR3hwZEhSbGNpQnRaWFJvYjJRZ2RHOGdjM0JzYVhRZ2MyVnhkV1Z1WTJWeklIUnZJRzF2Ym05dFpYSnpYRzRnS2lCQWNHRnlZVzBnZTNOMGNtbHVaMzBnZFc1cGRITmNiaUFxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J6WlhCaGNtRjBiM0pjYmlBcUlFQndZWEpoYlNCc2FXMXBkRnh1SUNvZ1FISmxkSFZ5YmlCN1UzQnNhWFIwWlhKR2RXNWpmVnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1oyVjBVM0JzYVhSMFpYSW9kVzVwZEhNNklITjBjbWx1Wnl3Z2MyVndZWEpoZEc5eU9pQnpkSEpwYm1jc0lHeHBiV2wwT2lCdWRXMWlaWElnZkNCMWJtUmxabWx1WldRZ1BTQjFibVJsWm1sdVpXUXBPaUJUY0d4cGRIUmxja1oxYm1NZ2UxeHVJQ0JwWmlBb2RXNXBkSE11ZEc5TWIzZGxja05oYzJVb0tTNXpkR0Z5ZEhOWGFYUm9LRTVQVkVGVVNVOU9Ma1pCVTFSQktTbGNiaUFnSUNCeVpYUjFjbTRnYzNCc2FYUjBaWEpCYzBaaGMzUmhPMXh1SUNCbGJITmxJR2xtSUNoMWJtbDBjeTUwYjB4dmQyVnlRMkZ6WlNncExuTjBZWEowYzFkcGRHZ29UazlVUVZSSlQwNHVVMFZRUVZKQlZFOVNLU2xjYmlBZ0lDQnlaWFIxY200Z1oyVjBVM0JzYVhSMFpYSlhhWFJvVTJWd1lYSmhkRzl5S0hObGNHRnlZWFJ2Y2l3Z2JHbHRhWFFwTzF4dUlDQmxiSE5sSUdsbUlDaDFibWwwY3k1MGIweHZkMlZ5UTJGelpTZ3BMbk4wWVhKMGMxZHBkR2dvVGs5VVFWUkpUMDR1U0VWTVRTa3BYRzRnSUNBZ2NtVjBkWEp1SUhOd2JHbDBkR1Z5UVhOSVpXeHRPMXh1SUNCbGJITmxYRzRnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dCVmJtVjRjR1ZqZEdWa0lIVnVhWFJ6SUNSN2RXNXBkSE45SUM1Z0tUdGNibHh1SUNBdkx5QlVUMFJQT2lCVGNHeHBkSFJsY2lCbWIzSWdTRVZNVFZ4dWZWeHVYRzR2S2lvZ1IyVnVaWEpoZEdVZ2MzQnNhWFIwWlhJZ1puVnVZM1JwYjI0Z1ptOXlJSE5sY1hWbGJtTmxJR052YkhWdGJseHVJQ29nUUhCaGNtRnRJSHRFUnk1RGIyeDFiVzU5SUdOdmJGeHVJQ29nUUhKbGRIVnliaUI3VTNCc2FYUjBaWEpHZFc1amZTQlRjR3hwZEhSbGNpQm1kVzVqZEdsdmJseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFUzQnNhWFIwWlhKR2IzSkRiMngxYlc0b1kyOXNPaUJFUnk1RGIyeDFiVzRwT2lCVGNHeHBkSFJsY2taMWJtTWdlMXh1SUNCcFppQW9ZMjlzTG5ObGJWUjVjR1VnSVQwOUlFUkhMbE5GVFZSWlVFVXVUVUZEVWs5TlQweEZRMVZNUlNsY2JpQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRWRsZENCemNHeHBkSFJsY2lCbWIzSWdjMlZ0Vkhsd1pTQmNJaVI3UkVjdVUwVk5WRmxRUlM1TlFVTlNUMDFQVEVWRFZVeEZmVndpSUc5dWJIa3VZQ2s3WEc1Y2JpQWdZMjl1YzNRZ2RXNXBkSE1nUFNCamIyd3VaMlYwVkdGbktFUkhMbFJCUjFNdVZVNUpWRk1wTzF4dUlDQmpiMjV6ZENCelpYQmhjbUYwYjNJZ1BTQmpiMnd1WjJWMFZHRm5LRlJCUjFNdWMyVndZWEpoZEc5eUtUdGNiaUFnY21WMGRYSnVJR2RsZEZOd2JHbDBkR1Z5S0hWdWFYUnpMQ0J6WlhCaGNtRjBiM0lwTzF4dWZWeHVYRzVqYjI1emRDQnNiMjVuVFc5dWIyMWxjbEJoY25SU1pUb2dVbVZuUlhod0lEMGdMeWhjWEhjcktTOW5PMXh1WEc0dktpb2dRMjl1ZG1WeWRDQnNiMjVuSUcxdmJtOXRaWElnYm1GdFpYTWdkRzhnYzJodmNuUWdiMjVsY3lBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHMXZibTl0WlhKVWIxTm9iM0owS0dGdGFXNXZPaUJ6ZEhKcGJtY3NJRzFoZUV4bGJtZDBhRTltVFc5dWIyMWxjam9nYm5WdFltVnlLVG9nYzNSeWFXNW5JSHRjYmlBZ1kyOXVjM1FnYzJodmNuUkJiV2x1YjAxaGRHTm9PaUJTWldkRmVIQk5ZWFJqYUVGeWNtRjVJSHdnYm5Wc2JDQTlJR0Z0YVc1dkxtMWhkR05vS0d4dmJtZE5iMjV2YldWeVVHRnlkRkpsS1R0Y2JpQWdZMjl1YzNRZ2JtVmxaRUZrWkVSdmRITTZJR0p2YjJ4bFlXNGdQU0JoYldsdWJ5NXNaVzVuZEdnZ1BpQnRZWGhNWlc1bmRHaFBaazF2Ym05dFpYSWdmSHdnS0hOb2IzSjBRVzFwYm05TllYUmphRDh1YkdWdVozUm9JRDgvSURBcElENGdNVHRjYmlBZ1kyOXVjM1FnYzJodmNuUkJiV2x1YnlBOUlITm9iM0owUVcxcGJtOU5ZWFJqYUQ4dVd6QmRJRDgvSUNjZ0p6dGNiaUFnY21WMGRYSnVJQ0Z1WldWa1FXUmtSRzkwY3lBL0lITm9iM0owUVcxcGJtOGdPaUJ6YUc5eWRFRnRhVzV2TG5OMVluTjBjbWx1Wnlnd0xDQnRZWGhNWlc1bmRHaFBaazF2Ym05dFpYSXBJQ3NnSitLQXBpYzdYRzU5WEc1Y2JpOHFLaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFRnNjR2hoWW1WMEtHRnNjR2hoWW1WME9pQkJURkJJUVVKRlZDazZJRk5sZER4emRISnBibWMrSUh0Y2JpQWdjM2RwZEdOb0lDaGhiSEJvWVdKbGRDa2dlMXh1SUNCallYTmxJRUZNVUVoQlFrVlVMa1JPUVRwY2JpQWdJQ0J5WlhSMWNtNGdWVzVwZEhOSVlXNWtiR1Z5TGtSdVlVWmhjM1JoUVd4d2FHRmlaWFE3WEc0Z0lHTmhjMlVnUVV4UVNFRkNSVlF1VWs1Qk9seHVJQ0FnSUhKbGRIVnliaUJWYm1sMGMwaGhibVJzWlhJdVVtNWhSbUZ6ZEdGQmJIQm9ZV0psZER0Y2JpQWdZMkZ6WlNCQlRGQklRVUpGVkM1UVZEcGNiaUFnSUNCeVpYUjFjbTRnVlc1cGRITklZVzVrYkdWeUxsQmxjSFJwWkdWR1lYTjBZVUZzY0doaFltVjBPMXh1SUNCa1pXWmhkV3gwT2x4dUlDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdWVzV6ZFhCd2IzSjBaV1FnWVd4d2FHRmlaWFFnSnlSN1lXeHdhR0ZpWlhSOUp5NWdLVHRjYmlBZ2ZWeHVmVnh1WEc0dktpb2dRMkZzWTNWc1lYUmxJSE5wYldsc1lYSnBkSGtnYVc0Z1kzVnljbVZ1ZENCelpYRjFaVzVqWlNCaGJtUWdZV3h3YUdGaVpYUXVYRzRnS2lCQWNHRnlZVzBnZTAxdmJtOXRaWEpHY21WeGMzMGdabkpsY1Z4dUlDb2dRSEJoY21GdElIdFRaWFE4YzNSeWFXNW5QbjBnWVd4d2FHRmlaWFJjYmlBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCbllYQlRlVzFpYjJ4Y2JpQXFJRUJ5WlhSMWNtNGdlMjUxYldKbGNuMGdRMjl6YVc1bElITnBiV2xzWVhKcGRIbGNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFRnNjR2hoWW1WMFUybHRhV3hoY21sMGVTaG1jbVZ4T2lCTmIyNXZiV1Z5Um5KbGNYTXNJR0ZzY0doaFltVjBPaUJUWlhROGMzUnlhVzVuUGl3Z1oyRndVM2x0WW05c09pQnpkSEpwYm1jZ1BTQW5MU2NwT2lCdWRXMWlaWElnZTF4dUlDQmpiMjV6ZENCclpYbHpJRDBnYm1WM0lGTmxkRHh6ZEhKcGJtYytLRnN1TGk1dVpYY2dVMlYwS0U5aWFtVmpkQzVyWlhsektHWnlaWEVwS1N3Z0xpNHVZV3h3YUdGaVpYUmRLVHRjYmlBZ2EyVjVjeTVrWld4bGRHVW9aMkZ3VTNsdFltOXNLVHRjYmx4dUlDQmpiMjV6ZENCbWNtVnhRVG9nYm5WdFltVnlXMTBnUFNCYlhUdGNiaUFnWTI5dWMzUWdZV3h3YUdGaVpYUkJPaUJ1ZFcxaVpYSmJYU0E5SUZ0ZE8xeHVJQ0JtYjNJZ0tHTnZibk4wSUcwZ2IyWWdhMlY1Y3lrZ2UxeHVJQ0FnSUdaeVpYRkJMbkIxYzJnb2JTQnBiaUJtY21WeElEOGdabkpsY1Z0dFhTQTZJREFwTzF4dUlDQWdJR0ZzY0doaFltVjBRUzV3ZFhOb0tHRnNjR2hoWW1WMExtaGhjeWh0S1NBL0lERWdPaUF3S1R0Y2JpQWdmVnh1SUNBdktpQlVhR1Z5WlNCM1pYSmxJR0VnWm1WM0lHbGtaV0Z6T2lCamFHa3RjM0YxWVhKbFpDd2djR1ZoY25OdmJpQmpiM0p5Wld4aGRHbHZiaUFvZG1GeWFXRnVZMlUvS1N3Z2MyTmhiR0Z5SUhCeWIyUjFZM1FnS2k5Y2JpQWdZMjl1YzNRZ1puSmxjVlk2SUZabFkzUnZjaUE5SUc1bGR5QldaV04wYjNJb1puSmxjVUVwTzF4dUlDQmpiMjV6ZENCaGJIQm9ZV0psZEZZNklGWmxZM1J2Y2lBOUlHNWxkeUJXWldOMGIzSW9ZV3h3YUdGaVpYUkJLVHRjYmlBZ2NtVjBkWEp1SUhabFkzUnZja1J2ZEZCeWIyUjFZM1FvWm5KbGNWWXNJR0ZzY0doaFltVjBWaWtnTHlBb2RtVmpkRzl5VEdWdVozUm9LR1p5WlhGV0tTQXFJSFpsWTNSdmNreGxibWQwYUNoaGJIQm9ZV0psZEZZcEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdSbGRHVmpkRUZzY0doaFltVjBLSE4wWVhSek9pQlRaWEZEYjJ4VGRHRjBjeWs2SUhOMGNtbHVaeUI3WEc0Z0lHTnZibk4wSUdGc2NHaGhZbVYwUTJGdVpHbGtZWFJsY3pvZ1czTjBjbWx1Wnl3Z1UyVjBQSE4wY21sdVp6NWRXMTBnUFNCYlhHNGdJQ0FnVzBGTVVFaEJRa1ZVTGxCVUxDQlZibWwwYzBoaGJtUnNaWEl1VUdWd2RHbGtaVVpoYzNSaFFXeHdhR0ZpWlhSZExGeHVJQ0FnSUZ0QlRGQklRVUpGVkM1RVRrRXNJRlZ1YVhSelNHRnVaR3hsY2k1RWJtRkdZWE4wWVVGc2NHaGhZbVYwWFN4Y2JpQWdJQ0JiUVV4UVNFRkNSVlF1VWs1QkxDQlZibWwwYzBoaGJtUnNaWEl1VW01aFJtRnpkR0ZCYkhCb1lXSmxkRjBzWEc0Z0lGMDdYRzVjYmlBZ0x5OGdRMkZzWTNWc1lYUmxJR3hwYTJWc2FXaHZiMlJ6SUdadmNpQmhiSEJvWVdKbGRGOWpZVzVrYVdSaGRHVnpYRzRnSUdOdmJuTjBJR0ZzY0doaFltVjBRMkZ1Wkdsa1lYUmxjMU5wYlRvZ2JuVnRZbVZ5VzEwZ1BTQmhiSEJvWVdKbGRFTmhibVJwWkdGMFpYTXViV0Z3S0Z4dUlDQWdJQ2hqS1NBOVBpQm5aWFJCYkhCb1lXSmxkRk5wYldsc1lYSnBkSGtvYzNSaGRITXVabkpsY1N3Z1kxc3hYU2twTzF4dUlDQmpiMjV6ZENCdFlYaERiM01nUFNCTllYUm9MbTFoZUNndUxpNWhiSEJvWVdKbGRFTmhibVJwWkdGMFpYTlRhVzBwTzF4dUlDQmpiMjV6ZENCaGJIQm9ZV0psZENBOUlHMWhlRU52Y3lBK0lEQXVOalVnUHlCaGJIQm9ZV0psZEVOaGJtUnBaR0YwWlhOYllXeHdhR0ZpWlhSRFlXNWthV1JoZEdWelUybHRMbWx1WkdWNFQyWW9iV0Y0UTI5ektWMWJNRjBnT2lBblZVNG5PMXh1SUNCeVpYUjFjbTRnWVd4d2FHRmlaWFE3WEc1OVhHNWNiaThxS2lCVFpXeGxZM1J6SUdFZ2MzVnBkR0ZpYkdVZ2NHRnNaWFIwWlNCaVlYTmxaQ0J2YmlCamIyeDFiVzRnWkdGMFlWeHVJQ29nUUhCaGNtRnRJSHRFUnk1RGIyeDFiVzU5SUhObGNVTnZiQ0JEYjJ4MWJXNGdkRzhnYkc5dmF5Qm1iM0lnWVNCd1lXeGxkSFJsWEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ0lHMXBia3hsYm1kMGFDQnRhVzVwYlhWdElHeGxibWQwYUNCdlppQnpaWEYxWlc1alpTQjBieUJrWlhSbFkzUWdjR0ZzWlhSMFpTQW9aVzF3ZEhrZ2MzUnlhVzVuY3lCaGNtVWdZV3hzYjNkbFpDbGNiaUFxSUVCeVpYUjFjbTRnZTFObGNWQmhiR1YwZEdWOUlGQmhiR1YwZEdVZ1kyOXljbVZ6Y0c5dVpHbHVaeUIwYnlCMGFHVWdZV3h3YUdGaVpYUWdiMllnZEdobElITmxjWFZsYm1ObGN5QnBiaUIwYUdVZ1kyOXNkVzF1WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQndhV05yVlhCUVlXeGxkSFJsS0hObGNVTnZiRG9nUkVjdVEyOXNkVzF1TENCdGFXNU1aVzVuZEdnNklHNTFiV0psY2lBOUlEVXBPaUJUWlhGUVlXeGxkSFJsSUh0Y2JpQWdiR1YwSUdGc2NHaGhZbVYwT2lCemRISnBibWM3WEc0Z0lHbG1JQ2h6WlhGRGIyd3VjMlZ0Vkhsd1pTQTlQU0JFUnk1VFJVMVVXVkJGTGsxQlExSlBUVTlNUlVOVlRFVXBJSHRjYmlBZ0lDQmpiMjV6ZENCMWFEb2dWVzVwZEhOSVlXNWtiR1Z5SUQwZ2JtVjNJRlZ1YVhSelNHRnVaR3hsY2loelpYRkRiMndwTzF4dUlDQWdJR0ZzY0doaFltVjBJRDBnZFdndVlXeHdhR0ZpWlhRN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ1kyOXVjM1FnYzNSaGRITTZJRk5sY1VOdmJGTjBZWFJ6SUQwZ1oyVjBVM1JoZEhNb2MyVnhRMjlzTENCdGFXNU1aVzVuZEdnc0lITndiR2wwZEdWeVFYTkdZWE4wWVNrN1hHNGdJQ0FnWVd4d2FHRmlaWFFnUFNCa1pYUmxZM1JCYkhCb1lXSmxkQ2h6ZEdGMGN5azdYRzRnSUgxY2JseHVJQ0JqYjI1emRDQnlaWE1nUFNCblpYUlFZV3hsZEhSbFFubFVlWEJsS0dGc2NHaGhZbVYwS1R0Y2JpQWdjbVYwZFhKdUlISmxjenRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRkJoYkdWMGRHVkNlVlI1Y0dVb2NHRnNaWFIwWlZSNWNHVTZJSE4wY21sdVp5azZJRk5sY1ZCaGJHVjBkR1VnZTF4dUlDQnpkMmwwWTJnZ0tIQmhiR1YwZEdWVWVYQmxLU0I3WEc0Z0lHTmhjMlVnSjFCVUp6cGNiaUFnSUNCeVpYUjFjbTRnUVcxcGJtOWhZMmxrYzFCaGJHVjBkR1Z6TGtkeWIydEhjbTkxY0hNN1hHNGdJR05oYzJVZ0owNVVKenBjYmlBZ1kyRnpaU0FuUkU1Qkp6cGNiaUFnWTJGelpTQW5VazVCSnpwY2JpQWdJQ0J5WlhSMWNtNGdUblZqYkdWdmRHbGtaWE5RWVd4bGRIUmxjeTVEYUhKdmJXRjBiMmR5WVcwN1hHNGdJQ0FnTHk4Z2IzUm9aWEpjYmlBZ1pHVm1ZWFZzZERwY2JpQWdJQ0J5WlhSMWNtNGdWVzVyYm05M2JsTmxjVkJoYkdWMGRHVnpMa052Ykc5eU8xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQndhV05yVlhCVFpYRkRiMndvWkdZNklFUkhMa1JoZEdGR2NtRnRaU2s2SUVSSExrTnZiSFZ0YmlCOElHNTFiR3dnZTF4dUlDQmpiMjV6ZENCelpXMVVlWEJsUTI5c1RHbHpkQ0E5SUdSbUxtTnZiSFZ0Ym5NdVlubFRaVzFVZVhCbFFXeHNLRVJITGxORlRWUlpVRVV1VFVGRFVrOU5UMHhGUTFWTVJTazdYRzRnSUd4bGRDQnlaWE5EYjJ3NklFUkhMa052YkhWdGJpQjhJRzUxYkd3Z1BTQnpaVzFVZVhCbFEyOXNUR2x6ZEM1bWFXNWtLQ2hqYjJ3cElEMCtJSHRjYmlBZ0lDQmpiMjV6ZENCMWJtbDBjeUE5SUdOdmJDNW5aWFJVWVdjb1JFY3VWRUZIVXk1VlRrbFVVeWs3WEc0Z0lDQWdjbVYwZFhKdUlIVnVhWFJ6SUQ4Z2RXNXBkSE11YVc1a1pYaFBaaWduVFZOQkp5a2dJVDA5SUMweElEb2dabUZzYzJVN1hHNGdJSDBwSUQ4L0lHNTFiR3c3WEc0Z0lHbG1JQ2doY21WelEyOXNJQ1ltSUhObGJWUjVjR1ZEYjJ4TWFYTjBMbXhsYm1kMGFDQStJREFwWEc0Z0lDQWdjbVZ6UTI5c0lEMGdjMlZ0Vkhsd1pVTnZiRXhwYzNSYk1GMDdYRzRnSUhKbGRIVnliaUJ5WlhORGIydzdYRzU5WEc0aVhYMD0iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgVW5pdHNIYW5kbGVyIH0gZnJvbSAnLi91bml0cy1oYW5kbGVyJztcbmltcG9ydCB7IGdldFNwbGl0dGVyRm9yQ29sdW1uLCBnZXRTdGF0cyB9IGZyb20gJy4vbWFjcm9tb2xlY3VsZSc7XG4vKiogQ2xhc3MgZm9yIGhhbmRsaW5nIGNvbnZlcnNpb24gb2Ygbm90YXRpb24gc3lzdGVtcyBpbiBNYWNyb21vbGVjdWxlIGNvbHVtbnMgKi9cbmV4cG9ydCBjbGFzcyBOb3RhdGlvbkNvbnZlcnRlciBleHRlbmRzIFVuaXRzSGFuZGxlciB7XG4gICAgZ2V0IHNwbGl0dGVyKCkge1xuICAgICAgICBpZiAodGhpcy5fc3BsaXR0ZXIgPT09IG51bGwpXG4gICAgICAgICAgICB0aGlzLl9zcGxpdHRlciA9IGdldFNwbGl0dGVyRm9yQ29sdW1uKHRoaXMuY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NwbGl0dGVyO1xuICAgIH1cbiAgICB0b0Zhc3RhKHRhcmdldE5vdGF0aW9uKSB7IHJldHVybiB0YXJnZXROb3RhdGlvbiA9PT0gXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgdG9TZXBhcmF0b3IodGFyZ2V0Tm90YXRpb24pIHsgcmV0dXJuIHRhcmdldE5vdGF0aW9uID09PSBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIHRvSGVsbSh0YXJnZXROb3RhdGlvbikgeyByZXR1cm4gdGFyZ2V0Tm90YXRpb24gPT09IFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgTWFjcm9tb2xlY3VsZSBjb2x1bW4gZnJvbSBGQVNUQSB0byBTRVBBUkFUT1Igbm90YXRpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3IgIEEgc3BlY2lmaWMgc2VwYXJhdG9yIHRvIGJlIHVzZWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmFzdGFHYXBTeW1ib2wgIEdhcCBzeW1ib2wgaW4gRkFTVEEsICctJyBieSBkZWZhdWx0XG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufSAgICAgICAgQSBuZXcgY29sdW1uIGluIFNFUEFSQVRPUiBub3RhdGlvblxuICAgICAqL1xuICAgIGNvbnZlcnRGYXN0YVRvU2VwYXJhdG9yKHNlcGFyYXRvciwgZmFzdGFHYXBTeW1ib2wgPSBudWxsKSB7XG4gICAgICAgIGlmIChmYXN0YUdhcFN5bWJvbCA9PT0gbnVsbClcbiAgICAgICAgICAgIGZhc3RhR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLyk7XG4gICAgICAgIC8vIGFzc2lnbiB0aGUgdmFsdWVzIHRvIHRoZSBuZXdseSBjcmVhdGVkIGVtcHR5IGNvbHVtblxuICAgICAgICBuZXdDb2x1bW4uaW5pdCgoaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmYXN0YVBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIGNvbnN0IGZhc3RhTW9ub21lcnNBcnJheSA9IHRoaXMuc3BsaXR0ZXIoZmFzdGFQb2x5bWVyKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmFzdGFNb25vbWVyc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZhc3RhTW9ub21lcnNBcnJheVtpXSA9PT0gZmFzdGFHYXBTeW1ib2wpXG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheVtpXSA9IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LlNFUEFSQVRPUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYXN0YU1vbm9tZXJzQXJyYXkuam9pbihzZXBhcmF0b3IpO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhERy5UQUdTLlVOSVRTLCBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLyk7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoXCJzZXBhcmF0b3JcIiAvKiBUQUdTLnNlcGFyYXRvciAqLywgc2VwYXJhdG9yKTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IHRoZSB3cmFwcGVyIHN0cmluZ3MgZm9yIEhFTE0sIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiB0aGVcbiAgICAgKiBtYWNyb21vbGVjdWxlIChwZXB0aWRlLCBETkEsIFJOQSlcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBBcnJheSBvZiB3cmFwcGVyc1xuICAgICAqL1xuICAgIGdldEhlbG1XcmFwcGVycygpIHtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gKHRoaXMuaXNEbmEoKSkgPyAnRE5BMXsnIDpcbiAgICAgICAgICAgICh0aGlzLmlzUm5hKCkpID8gJ1JOQTF7JyA6XG4gICAgICAgICAgICAgICAgKHRoaXMuaXNQZXB0aWRlKCkpID8gJ1BFUFRJREUxeycgOlxuICAgICAgICAgICAgICAgICAgICAnVW5rbm93bic7IC8vIHRoaXMgY2FzZSBzaG91bGQgYmUgaGFuZGxlZCBhcyBleGNlcHRpb25hbFxuICAgICAgICBpZiAocHJlZml4ID09PSAnVW5rbm93bicpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05laXRoZXIgcGVwdGlkZSwgbm9yIG51Y2xlb3RpZGUnKTtcbiAgICAgICAgY29uc3QgcG9zdGZpeCA9ICd9JCQkJztcbiAgICAgICAgY29uc3QgbGVmdFdyYXBwZXIgPSAodGhpcy5pc0RuYSgpKSA/ICdEKCcgOlxuICAgICAgICAgICAgKHRoaXMuaXNSbmEoKSkgPyAnUignIDogJyc7IC8vIG5vIHdyYXBwZXIgZm9yIHBlcHRpZGVzXG4gICAgICAgIGNvbnN0IHJpZ2h0V3JhcHBlciA9ICh0aGlzLmlzRG5hKCkgfHwgdGhpcy5pc1JuYSgpKSA/ICcpUCcgOiAnJzsgLy8gbm8gd3JhcHBlciBmb3IgcGVwdGlkZXNcbiAgICAgICAgcmV0dXJuIFtwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXhdO1xuICAgIH1cbiAgICAvLyBBIGhlbHBlciBmdW5jdGlvbiBmb3IgY29udmVydGluZyBzdHJpbmdzIHRvIEhFTE1cbiAgICBjb252ZXJ0VG9IZWxtSGVscGVyKHNvdXJjZVBvbHltZXIsIHNvdXJjZUdhcFN5bWJvbCwgcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4KSB7XG4gICAgICAgIGNvbnN0IG1vbm9tZXJBcnJheSA9IHRoaXMuc3BsaXR0ZXIoc291cmNlUG9seW1lcik7XG4gICAgICAgIGNvbnN0IG1vbm9tZXJIZWxtQXJyYXkgPSBtb25vbWVyQXJyYXkubWFwKChtbSkgPT4ge1xuICAgICAgICAgICAgaWYgKG1tID09PSBzb3VyY2VHYXBTeW1ib2wpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkhFTE07XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2xlZnRXcmFwcGVyfSR7bW19JHtyaWdodFdyYXBwZXJ9YDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBgJHtwcmVmaXh9JHttb25vbWVySGVsbUFycmF5LmpvaW4oJy4nKX0ke3Bvc3RmaXh9YDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29udmVydCBhIHN0cmluZyB3aXRoIFNFUEFSQVRPUi9GQVNUQSBub3RhdGlvbiB0byBIRUxNXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlUG9seW1lciAgQSBzdHJpbmcgdG8gYmUgY29udmVydGVkXG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSBzb3VyY2VHYXBTeW1ib2wgIEFuIG9wdGlvbmFsIGdhcCBzeW1ib2wsIHNldCB0b1xuICAgICAqIGRlZmF1bHQgdmFsdWVzICgnLScgZm9yIEZBU1RBIGFuZCAnJyBmb3IgU0VQQVJBVE9SKSB1bmxlc3Mgc3BlY2lmaWVkXG4gICAgICogQHJldHVybiB7c3RyaW5nfSAgVGhlIHRhcmdldCBIRUxNIHN0cmluZ1xuICAgICAqL1xuICAgIGNvbnZlcnRTdHJpbmdUb0hlbG0oc291cmNlUG9seW1lciwgc291cmNlR2FwU3ltYm9sID0gbnVsbCkge1xuICAgICAgICBpZiAoc291cmNlR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgICAgICAgc291cmNlR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuICAgICAgICBjb25zdCBbcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4XSA9IHRoaXMuZ2V0SGVsbVdyYXBwZXJzKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG1IZWxwZXIoc291cmNlUG9seW1lciwgc291cmNlR2FwU3ltYm9sLCBwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IGEgY29sdW1uIHRvIEhFTE1cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gc291cmNlR2FwU3ltYm9sXG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufVxuICAgICAqL1xuICAgIGNvbnZlcnRUb0hlbG0oc291cmNlR2FwU3ltYm9sID0gbnVsbCkge1xuICAgICAgICBpZiAoc291cmNlR2FwU3ltYm9sID09PSBudWxsKVxuICAgICAgICAgICAgc291cmNlR2FwU3ltYm9sID0gdGhpcy5kZWZhdWx0R2FwU3ltYm9sO1xuICAgICAgICBjb25zdCBbcHJlZml4LCBsZWZ0V3JhcHBlciwgcmlnaHRXcmFwcGVyLCBwb3N0Zml4XSA9IHRoaXMuZ2V0SGVsbVdyYXBwZXJzKCk7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IHRoaXMuZ2V0TmV3Q29sdW1uKFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi8pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZVBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG1IZWxwZXIoc291cmNlUG9seW1lciwgc291cmNlR2FwU3ltYm9sLCBwcmVmaXgsIGxlZnRXcmFwcGVyLCByaWdodFdyYXBwZXIsIHBvc3RmaXgpO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhERy5UQUdTLlVOSVRTLCBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovKTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29udmVydCBTRVBBUkFUT1IgY29sdW1uIHRvIEZBU1RBIG5vdGF0aW9uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGx9IGZhc3RhR2FwU3ltYm9sIE9wdGlvbmFsIGdhcCBzeW1ib2wgZm9yIEZBU1RBXG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufSAgQ29udmVydGVkIGNvbHVtblxuICAgICAqL1xuICAgIGNvbnZlcnRTZXBhcmF0b3JUb0Zhc3RhKGZhc3RhR2FwU3ltYm9sID0gbnVsbCkge1xuICAgICAgICBpZiAoZmFzdGFHYXBTeW1ib2wgPT09IG51bGwpXG4gICAgICAgICAgICBmYXN0YUdhcFN5bWJvbCA9IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkZBU1RBO1xuICAgICAgICBjb25zdCBuZXdDb2x1bW4gPSB0aGlzLmdldE5ld0NvbHVtbihcImZhc3RhXCIgLyogTk9UQVRJT04uRkFTVEEgKi8pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcGFyYXRvclBvbHltZXIgPSB0aGlzLmNvbHVtbi5nZXQoaWR4KTtcbiAgICAgICAgICAgIC8vIGl0ZW1zIGNhbiBiZSBtb25vbWVycyBvciBzZXBhcmF0b3JzXG4gICAgICAgICAgICBjb25zdCBzZXBhcmF0b3JJdGVtc0FycmF5ID0gdGhpcy5zcGxpdHRlcihzZXBhcmF0b3JQb2x5bWVyKTtcbiAgICAgICAgICAgIGNvbnN0IGZhc3RhTW9ub21lcnNBcnJheSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXBhcmF0b3JJdGVtc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHNlcGFyYXRvckl0ZW1zQXJyYXlbaV07XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKGZhc3RhR2FwU3ltYm9sKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXRlbS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjYXNlIG9mIGEgbXVsdGktY2hhcmFjdGVyIG1vbm9tZXJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9ub21lciA9ICdbJyArIGl0ZW0gKyAnXSc7XG4gICAgICAgICAgICAgICAgICAgIGZhc3RhTW9ub21lcnNBcnJheS5wdXNoKG1vbm9tZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZmFzdGFNb25vbWVyc0FycmF5LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhc3RhTW9ub21lcnNBcnJheS5qb2luKCcnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5VTklUUywgXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovKTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogIENvbnZlcnQgSEVMTSBzdHJpbmcgdG8gRkFTVEEvU0VQQVJBVE9SXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gaGVsbVBvbHltZXIgICAgQSBzdHJpbmcgdG8gYmUgY29udmVydGVkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRndE5vdGF0aW9uICAgIFRhcmdldCBub3RhdGlvbjogRkFTVEEgb3IgU0VQQVJBVE9SXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRndFNlcGFyYXRvciAgIE9wdGlvbmFsIHRhcmdldCBzZXBhcmF0b3IgKGZvciBIRUxNIC0+XG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RHYXBTeW1ib2wgICBPcHRpb25hbCB0YXJnZXQgZ2FwIHN5bWJvbFxuICAgICAqIFNFUEFSQVRPUilcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IENvbnZlcnRlZCBzdHJpbmdcbiAgICAgKi9cbiAgICBjb252ZXJ0SGVsbVRvRmFzdGFTZXBhcmF0b3IoaGVsbVBvbHltZXIsIHRndE5vdGF0aW9uLCB0Z3RTZXBhcmF0b3IsIHRndEdhcFN5bWJvbCkge1xuICAgICAgICBpZiAoIXRndEdhcFN5bWJvbCkge1xuICAgICAgICAgICAgdGd0R2FwU3ltYm9sID0gKHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikpID9cbiAgICAgICAgICAgICAgICBVbml0c0hhbmRsZXIuX2RlZmF1bHRHYXBTeW1ib2xzRGljdC5GQVNUQSA6XG4gICAgICAgICAgICAgICAgVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuU0VQQVJBVE9SO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGd0U2VwYXJhdG9yKSB7XG4gICAgICAgICAgICB0Z3RTZXBhcmF0b3IgPSAodGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSkgPyAnJyA6IHRoaXMuc2VwYXJhdG9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGhlbG1XcmFwcGVyc1JlID0gLyhSXFwofERcXCh8XFwpfFApL2c7XG4gICAgICAgIGNvbnN0IGlzTnVjbGVvdGlkZSA9IGhlbG1Qb2x5bWVyLnN0YXJ0c1dpdGgoJ0ROQScpIHx8IGhlbG1Qb2x5bWVyLnN0YXJ0c1dpdGgoJ1JOQScpO1xuICAgICAgICAvLyBpdGVtcyBjYW4gYmUgbW9ub21lcnMgb3IgaGVsbXNcbiAgICAgICAgY29uc3QgaGVsbUl0ZW1zQXJyYXkgPSB0aGlzLnNwbGl0dGVyKGhlbG1Qb2x5bWVyKTtcbiAgICAgICAgY29uc3QgdGd0TW9ub21lcnNBcnJheSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGhlbG1JdGVtc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgaXRlbSA9IGhlbG1JdGVtc0FycmF5W2ldO1xuICAgICAgICAgICAgaWYgKGlzTnVjbGVvdGlkZSlcbiAgICAgICAgICAgICAgICBpdGVtID0gaXRlbS5yZXBsYWNlKGhlbG1XcmFwcGVyc1JlLCAnJyk7XG4gICAgICAgICAgICBpZiAoaXRlbSA9PT0gVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QuSEVMTSkge1xuICAgICAgICAgICAgICAgIHRndE1vbm9tZXJzQXJyYXkucHVzaCh0Z3RHYXBTeW1ib2wpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy50b0Zhc3RhKHRndE5vdGF0aW9uKSAmJiBpdGVtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAvLyB0aGUgY2FzZSBvZiBhIG11bHRpLWNoYXJhY3RlciBtb25vbWVyIGNvbnZlcnRlZCB0byBGQVNUQVxuICAgICAgICAgICAgICAgIGNvbnN0IG1vbm9tZXIgPSAnWycgKyBpdGVtICsgJ10nO1xuICAgICAgICAgICAgICAgIHRndE1vbm9tZXJzQXJyYXkucHVzaChtb25vbWVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRndE1vbm9tZXJzQXJyYXkucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGd0TW9ub21lcnNBcnJheS5qb2luKHRndFNlcGFyYXRvcik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqICBDb252ZXJ0IEhFTE0gY29sdW1uIHRvIEZBU1RBL1NFUEFSQVRPUlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRndE5vdGF0aW9uICAgIFRhcmdldCBub3RhdGlvbjogRkFTVEEgb3IgU0VQQVJBVE9SXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRndFNlcGFyYXRvciAgIE9wdGlvbmFsIHRhcmdldCBzZXBhcmF0b3IgKGZvciBIRUxNIC0+XG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RHYXBTeW1ib2wgICBPcHRpb25hbCB0YXJnZXQgZ2FwIHN5bWJvbFxuICAgICAqIFNFUEFSQVRPUilcbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59IENvbnZlcnRlZCBjb2x1bW5cbiAgICAgKi9cbiAgICBjb252ZXJ0SGVsbSh0Z3ROb3RhdGlvbiwgdGd0U2VwYXJhdG9yLCB0Z3RHYXBTeW1ib2wpIHtcbiAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBtdXN0IG5vdCBjb250YWluIGNhbGxzIG9mIGlzRG5hKCkgYW5kIGlzUm5hKCksIGZvclxuICAgICAgICAvLyBzb3VyY2UgaGVsbSBjb2x1bW5zIG1heSBjb250YWluIFJOQSwgRE5BIGFuZCBQVCBhY3Jvc3MgZGlmZmVyZW50IHJvd3NcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uID0gdGhpcy5nZXROZXdDb2x1bW4odGd0Tm90YXRpb24pO1xuICAgICAgICAvLyBhc3NpZ24gdGhlIHZhbHVlcyB0byB0aGUgZW1wdHkgY29sdW1uXG4gICAgICAgIG5ld0NvbHVtbi5pbml0KChpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGhlbG1Qb2x5bWVyID0gdGhpcy5jb2x1bW4uZ2V0KGlkeCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0SGVsbVRvRmFzdGFTZXBhcmF0b3IoaGVsbVBvbHltZXIsIHRndE5vdGF0aW9uLCB0Z3RTZXBhcmF0b3IsIHRndEdhcFN5bWJvbCk7XG4gICAgICAgICAgICAvLyB3ZSBjYW5ub3QgdXNlIGlzRG5hKCkgb3IgaXNSbmEoKSBiZWNhdXNlIHNvdXJjZSBoZWxtIGNvbHVtbnMgY2FuXG4gICAgICAgICAgICAvLyBjb250YWluIEROQSwgUk5BIGFuZCBQVCBpbiBkaWZmZXJlbnQgY2VsbHMsIHNvIHRoZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAvLyB0YWdzIGNhbm5vdCBiZSBzZXQgZm9yIHRoZSB3aG9sZSBjb2x1bW5cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIFRBR1MuYWxpZ25lZCBpcyBtYW5kYXRvcnkgZm9yIGNvbHVtbnMgb2YgTk9UQVRJT04uRkFTVEEgYW5kIE5PVEFUSU9OLlNFUEFSQVRPUlxuICAgICAgICBjb25zdCBzcGxpdHRlciA9IGdldFNwbGl0dGVyRm9yQ29sdW1uKG5ld0NvbHVtbik7XG4gICAgICAgIGNvbnN0IHN0YXRzID0gZ2V0U3RhdHMobmV3Q29sdW1uLCA1LCBzcGxpdHRlcik7XG4gICAgICAgIGNvbnN0IGFsaWduZWQgPSBzdGF0cy5zYW1lTGVuZ3RoID8gJ1NFUS5NU0EnIDogJ1NFUSc7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoXCJhbGlnbmVkXCIgLyogVEFHUy5hbGlnbmVkICovLCBhbGlnbmVkKTtcbiAgICAgICAgcmV0dXJuIG5ld0NvbHVtbjtcbiAgICB9XG4gICAgY29udmVydEhlbG1Ub1NlcGFyYXRvcigpIHtcbiAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50YXRpb3JldHVybiB0aGlzLmdldE5ld0NvbHVtbigpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXROZXdDb2x1bW4oXCJzZXBhcmF0b3JcIiAvKiBOT1RBVElPTi5TRVBBUkFUT1IgKi8pO1xuICAgIH1cbiAgICAvKiogRGlzcGF0Y2hlciBtZXRob2QgZm9yIG5vdGF0aW9uIGNvbnZlcnNpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Tk9UQVRJT059IHRndE5vdGF0aW9uICAgTm90YXRpb24gd2Ugd2FudCB0byBjb252ZXJ0IHRvXG4gICAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsfSB0Z3RTZXBhcmF0b3IgICBQb3NzaWJsZSBzZXBhcmF0b3JcbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59ICAgICAgICAgICAgICAgIENvbnZlcnRlZCBjb2x1bW5cbiAgICAgKi9cbiAgICBjb252ZXJ0KHRndE5vdGF0aW9uLCB0Z3RTZXBhcmF0b3IgPSBudWxsKSB7XG4gICAgICAgIC8vIHBvc3NpYmxlIGV4Y2VwdGlvbnNcbiAgICAgICAgaWYgKHRoaXMubm90YXRpb24gPT09IHRndE5vdGF0aW9uKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0Z3Qgbm90YXRpb24gaXMgaW52YWxpZCcpO1xuICAgICAgICBpZiAodGhpcy50b1NlcGFyYXRvcih0Z3ROb3RhdGlvbikgJiYgdGd0U2VwYXJhdG9yID09PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0Z3Qgc2VwYXJhdG9yIGlzIG5vdCBzcGVjaWZpZWQnKTtcbiAgICAgICAgaWYgKHRoaXMuaXNGYXN0YSgpICYmIHRoaXMudG9TZXBhcmF0b3IodGd0Tm90YXRpb24pICYmIHRndFNlcGFyYXRvciAhPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRGYXN0YVRvU2VwYXJhdG9yKHRndFNlcGFyYXRvcik7XG4gICAgICAgIGVsc2UgaWYgKCh0aGlzLmlzRmFzdGEoKSB8fCB0aGlzLmlzU2VwYXJhdG9yKCkpICYmIHRoaXMudG9IZWxtKHRndE5vdGF0aW9uKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUb0hlbG0oKTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc1NlcGFyYXRvcigpICYmIHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0U2VwYXJhdG9yVG9GYXN0YSgpO1xuICAgICAgICBlbHNlIGlmICh0aGlzLmlzSGVsbSgpICYmIHRoaXMudG9GYXN0YSh0Z3ROb3RhdGlvbikpIC8vIHRoZSBjYXNlIG9mIEhFTE1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRIZWxtKHRndE5vdGF0aW9uKTtcbiAgICAgICAgZWxzZSBpZiAodGhpcy5pc0hlbG0oKSAmJiB0aGlzLnRvU2VwYXJhdG9yKHRndE5vdGF0aW9uKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRIZWxtKHRndE5vdGF0aW9uLCB0Z3RTZXBhcmF0b3IpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQgY29udmVyc2lvbiAnICtcbiAgICAgICAgICAgICAgICBgZnJvbSBzb3VyY2Ugbm90YXRpb24gJyR7dGhpcy5ub3RhdGlvbn0nIHRvIHRhcmdldCBub3RhdGlvbiAnJHt0Z3ROb3RhdGlvbn0nLmApO1xuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcihjb2wpIHtcbiAgICAgICAgc3VwZXIoY29sKTtcbiAgICAgICAgdGhpcy5fc3BsaXR0ZXIgPSBudWxsO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJtOTBZWFJwYjI0dFkyOXVkbVZ5ZEdWeUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpYm05MFlYUnBiMjR0WTI5dWRtVnlkR1Z5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVZEJMRTlCUVU4c1MwRkJTeXhGUVVGRkxFMUJRVTBzYVVKQlFXbENMRU5CUVVNN1FVRkZkRU1zVDBGQlR5eEZRVUZETEZsQlFWa3NSVUZCUXl4TlFVRk5MR2xDUVVGcFFpeERRVUZETzBGQlF6ZERMRTlCUVU4c1JVRkJReXh2UWtGQmIwSXNSVUZCUlN4UlFVRlJMRVZCUVRSRExFMUJRVTBzYVVKQlFXbENMRU5CUVVNN1FVRkZNVWNzYVVaQlFXbEdPMEZCUTJwR0xFMUJRVTBzVDBGQlR5eHBRa0ZCYTBJc1UwRkJVU3haUVVGWk8wbEJSMnBFTEVsQlFXTXNVVUZCVVR0UlFVTndRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZUTEV0QlFVc3NTVUZCU1R0WlFVTjZRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEc5Q1FVRnZRaXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTnlSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTTdTVUZEZUVJc1EwRkJRenRKUVVWTkxFOUJRVThzUTBGQlF5eGpRVUYzUWl4SlFVRmhMRTlCUVU4c1kwRkJZeXhwUTBGQmJVSXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZlRVlzVjBGQlZ5eERRVUZETEdOQlFYZENMRWxCUVdFc1QwRkJUeXhqUVVGakxIbERRVUYxUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWb1J5eE5RVUZOTEVOQlFVTXNZMEZCZDBJc1NVRkJZU3hQUVVGUExHTkJRV01zSzBKQlFXdENMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSVGRHT3pzN096czdUMEZOUnp0SlFVTkxMSFZDUVVGMVFpeERRVUZETEZOQlFXbENMRVZCUVVVc2FVSkJRV2RETEVsQlFVazdVVUZEY2tZc1NVRkJTU3hqUVVGakxFdEJRVXNzU1VGQlNUdFpRVU42UWl4alFVRmpMRWRCUVVjc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRPMUZCUlhwRExFMUJRVTBzVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMSE5EUVVGdlFpeERRVUZETzFGQlEzaEVMSE5FUVVGelJEdFJRVU4wUkN4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlZ5eEZRVUZGTEVWQlFVVTdXVUZETjBJc1RVRkJUU3haUVVGWkxFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRE1VTXNUVUZCVFN4clFrRkJhMElzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8xbEJRM1pFTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eHJRa0ZCYTBJc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUTJ4RUxFbEJRVWtzYTBKQlFXdENMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzWTBGQll6dHZRa0ZETVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1dVRkJXU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRk5CUVZNc1EwRkJRenRoUVVONlJUdFpRVU5FTEU5QlFVOHNhMEpCUVd0Q0xFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUXpWRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwZ3NVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NkVU5CUVhGQ0xFTkJRVU03VVVGRGNFUXNVMEZCVXl4RFFVRkRMRTFCUVUwc2JVTkJRV2xDTEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUXpWRExFOUJRVThzVTBGQlV5eERRVUZETzBsQlEyNUNMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOTExHVkJRV1U3VVVGRGNrSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRGRrTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1owSkJRM2hDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMjlDUVVOb1F5eFRRVUZUTEVOQlFVTXNRMEZCUXl3MlEwRkJOa003VVVGRk9VUXNTVUZCU1N4TlFVRk5MRXRCUVVzc1UwRkJVenRaUVVOMFFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMR2xEUVVGcFF5eERRVUZETEVOQlFVTTdVVUZGY2tRc1RVRkJUU3hQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZETzFGQlEzWkNMRTFCUVUwc1YwRkJWeXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFsQlEzcERMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNNRUpCUVRCQ08xRkJRM2hFTEUxQlFVMHNXVUZCV1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExEQkNRVUV3UWp0UlFVTXpSaXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTEZkQlFWY3NSVUZCUlN4WlFVRlpMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRGRFUXNRMEZCUXp0SlFVVkVMRzFFUVVGdFJEdEpRVU16UXl4dFFrRkJiVUlzUTBGRGVrSXNZVUZCY1VJc1JVRkRja0lzWlVGQmRVSXNSVUZEZGtJc1RVRkJZeXhGUVVOa0xGZEJRVzFDTEVWQlEyNUNMRmxCUVc5Q0xFVkJRM0JDTEU5QlFXVTdVVUZGWml4TlFVRk5MRmxCUVZrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEdGQlFXRXNRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFMUJRVTBzWjBKQlFXZENMRWRCUVdFc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFWVXNSVUZCUlN4RlFVRkZPMWxCUTJwRkxFbEJRVWtzUlVGQlJTeExRVUZMTEdWQlFXVTdaMEpCUTNoQ0xFOUJRVThzV1VGQldTeERRVUZETEhOQ1FVRnpRaXhEUVVGRExFbEJRVWtzUTBGQlF6czdaMEpCUldoRUxFOUJRVThzUjBGQlJ5eFhRVUZYTEVkQlFVY3NSVUZCUlN4SFFVRkhMRmxCUVZrc1JVRkJSU3hEUVVGRE8xRkJRMmhFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTBnc1QwRkJUeXhIUVVGSExFMUJRVTBzUjBGQlJ5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NUMEZCVHl4RlFVRkZMRU5CUVVNN1NVRkROVVFzUTBGQlF6dEpRVVZFT3pzN096czdPMDlCVDBjN1NVRkRTU3h0UWtGQmJVSXNRMEZEZUVJc1lVRkJjVUlzUlVGRGNrSXNhMEpCUVdsRExFbEJRVWs3VVVGRmNrTXNTVUZCU1N4bFFVRmxMRXRCUVVzc1NVRkJTVHRaUVVNeFFpeGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETzFGQlF6RkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRVVVzVjBGQlZ5eEZRVUZGTEZsQlFWa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeEZRVUZGTEVOQlFVTTdVVUZETlVVc1QwRkJUeXhKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1lVRkJZU3hGUVVGRkxHVkJRV1VzUlVGQlJTeE5RVUZOTEVWQlFVVXNWMEZCVnl4RlFVRkZMRmxCUVZrc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dEpRVU01Unl4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTeXhoUVVGaExFTkJRVU1zYTBKQlFXbERMRWxCUVVrN1VVRkRla1FzU1VGQlNTeGxRVUZsTEV0QlFVc3NTVUZCU1R0WlFVTXhRaXhsUVVGbExFZEJRVWNzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRE8xRkJSVEZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRVZCUVVVc1YwRkJWeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFBRVUZQTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1pVRkJaU3hGUVVGRkxFTkJRVU03VVVGRk5VVXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzTkVKQlFXVXNRMEZCUXp0UlFVTnVSQ3gzUTBGQmQwTTdVVUZEZUVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFWY3NSVUZCUlN4RlFVRkZPMWxCUXpkQ0xFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlF6TkRMRTlCUVU4c1NVRkJTU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMR0ZCUVdFc1JVRkJSU3hsUVVGblFpeEZRVUZGTEUxQlFVMHNSVUZCUlN4WFFVRlhMRVZCUVVVc1dVRkJXU3hGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzFGQlF5OUhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMGdzVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzTmtKQlFXZENMRU5CUVVNN1VVRkRMME1zVDBGQlR5eFRRVUZUTEVOQlFVTTdTVUZEYmtJc1EwRkJRenRKUVVWRU96czdPenRQUVV0SE8wbEJRMHNzZFVKQlFYVkNMRU5CUVVNc2FVSkJRV2RETEVsQlFVazdVVUZEYkVVc1NVRkJTU3hqUVVGakxFdEJRVXNzU1VGQlNUdFpRVU42UWl4alFVRmpMRWRCUVVjc1dVRkJXU3hEUVVGRExITkNRVUZ6UWl4RFFVRkRMRXRCUVVzc1EwRkJRenRSUVVVM1JDeE5RVUZOTEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3c0UWtGQlowSXNRMEZCUXp0UlFVTndSQ3gzUTBGQmQwTTdVVUZEZUVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFWY3NSVUZCUlN4RlFVRkZPMWxCUXpkQ0xFMUJRVTBzWjBKQlFXZENMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRPVU1zYzBOQlFYTkRPMWxCUTNSRExFMUJRVTBzYlVKQlFXMUNMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8xbEJRelZFTEUxQlFVMHNhMEpCUVd0Q0xFZEJRV0VzUlVGQlJTeERRVUZETzFsQlEzaERMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1owSkJRMjVFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRzFDUVVGdFFpeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOd1F5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJReXhGUVVGRk8yOUNRVU55UWl4clFrRkJhMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWlN4RFFVRkRMRU5CUVVNN2FVSkJRekZETzNGQ1FVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdiMEpCUXpGQ0xIZERRVUYzUXp0dlFrRkRlRU1zVFVGQlRTeFBRVUZQTEVkQlFVY3NSMEZCUnl4SFFVRkhMRWxCUVVrc1IwRkJSeXhIUVVGSExFTkJRVU03YjBKQlEycERMR3RDUVVGclFpeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRwUWtGRGJFTTdjVUpCUVUwN2IwSkJRMHdzYTBKQlFXdENMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJsQ1FVTXZRanRoUVVOR08xbEJRMFFzVDBGQlR5eHJRa0ZCYTBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdVVUZEY2tNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRFNDeFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5d3JRa0ZCYVVJc1EwRkJRenRSUVVOb1JDeFBRVUZQTEZOQlFWTXNRMEZCUXp0SlFVTnVRaXhEUVVGRE8wbEJSVVE3T3pzN096czdPenRQUVZOSE8wbEJRMGtzTWtKQlFUSkNMRU5CUTJoRExGZEJRVzFDTEVWQlEyNUNMRmRCUVcxQ0xFVkJRMjVDTEZsQlFYRkNMRVZCUTNKQ0xGbEJRWEZDTzFGQlJYSkNMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVU3V1VGRGFrSXNXVUZCV1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFhRVUYxUWl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU4wUkN4WlFVRlpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1owSkJRek5ETEZsQlFWa3NRMEZCUXl4elFrRkJjMElzUTBGQlF5eFRRVUZUTEVOQlFVTTdVMEZEYWtRN1VVRkZSQ3hKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTzFsQlEycENMRmxCUVZrc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCZFVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF6dFRRVU01UlR0UlFVTkVMRTFCUVUwc1kwRkJZeXhIUVVGSExHbENRVUZwUWl4RFFVRkRPMUZCUTNwRExFMUJRVTBzV1VGQldTeEhRVUZITEZkQlFWY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzVjBGQlZ5eERRVUZETEZWQlFWVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVOd1JpeHBRMEZCYVVNN1VVRkRha01zVFVGQlRTeGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dFJRVU5zUkN4TlFVRk5MR2RDUVVGblFpeEhRVUZoTEVWQlFVVXNRMEZCUXp0UlFVTjBReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1kwRkJZeXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTTVReXhKUVVGSkxFbEJRVWtzUjBGQlJ5eGpRVUZqTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkROMElzU1VGQlNTeFpRVUZaTzJkQ1FVTmtMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEdOQlFXTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRaUVVNeFF5eEpRVUZKTEVsQlFVa3NTMEZCU3l4WlFVRlpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNTVUZCU1N4RlFVRkZPMmRDUVVOeVJDeG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQllTeERRVUZETEVOQlFVTTdZVUZEZEVNN2FVSkJRVTBzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVhWQ0xFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1JVRkJSVHRuUWtGRGJrVXNNa1JCUVRKRU8yZENRVU16UkN4TlFVRk5MRTlCUVU4c1IwRkJSeXhIUVVGSExFZEJRVWNzU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXp0blFrRkRha01zWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzJGQlEyaERPMmxDUVVGTk8yZENRVU5NTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0aFFVTTNRanRUUVVOR08xRkJRMFFzVDBGQlR5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdTVUZETjBNc1EwRkJRenRKUVVWRU96czdPenM3T3p0UFFWRkhPMGxCUTBzc1YwRkJWeXhEUVVGRExGZEJRVzFDTEVWQlFVVXNXVUZCY1VJc1JVRkJSU3haUVVGeFFqdFJRVU51Uml4dFJVRkJiVVU3VVVGRGJrVXNkMFZCUVhkRk8xRkJRM2hGTEUxQlFVMHNVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVjBGQmRVSXNRMEZCUXl4RFFVRkRPMUZCUXpkRUxIZERRVUYzUXp0UlFVTjRReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCVnl4RlFVRkZMRVZCUVVVN1dVRkROMElzVFVGQlRTeFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEZWtNc1QwRkJUeXhKUVVGSkxFTkJRVU1zTWtKQlFUSkNMRU5CUVVNc1YwRkJWeXhGUVVGRkxGZEJRVmNzUlVGQlJTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RFFVRkRMRU5CUVVNN1dVRkRPVVlzYlVWQlFXMUZPMWxCUTI1RkxHMUZRVUZ0UlR0WlFVTnVSU3d3UTBGQk1FTTdVVUZETlVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRlNDeHBSa0ZCYVVZN1VVRkRha1lzVFVGQlRTeFJRVUZSTEVkQlFXbENMRzlDUVVGdlFpeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUXk5RUxFMUJRVTBzUzBGQlN5eEhRVUZuUWl4UlFVRlJMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0UlFVTTFSQ3hOUVVGTkxFOUJRVThzUjBGQlJ5eExRVUZMTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXp0UlFVTnlSQ3hUUVVGVExFTkJRVU1zVFVGQlRTd3JRa0ZCWlN4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVWNFF5eFBRVUZQTEZOQlFWTXNRMEZCUXp0SlFVTnVRaXhEUVVGRE8wbEJSVThzYzBKQlFYTkNPMUZCUXpWQ0xHbEVRVUZwUkR0UlFVTnFSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eFpRVUZaTEhORFFVRnZRaXhEUVVGRE8wbEJReTlETEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTkpMRTlCUVU4c1EwRkJReXhYUVVGeFFpeEZRVUZGTEdWQlFUaENMRWxCUVVrN1VVRkRkRVVzYzBKQlFYTkNPMUZCUTNSQ0xFbEJRVWtzU1VGQlNTeERRVUZETEZGQlFWRXNTMEZCU3l4WFFVRlhPMWxCUXk5Q0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNlVUpCUVhsQ0xFTkJRVU1zUTBGQlF6dFJRVU0zUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NXVUZCV1N4TFFVRkxMRWxCUVVrN1dVRkRlRVFzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4blEwRkJaME1zUTBGQlF5eERRVUZETzFGQlJYQkVMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzV1VGQldTeExRVUZMTEVsQlFVazdXVUZETVVVc1QwRkJUeXhKUVVGSkxFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03WVVGREwwTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZkQlFWY3NRMEZCUXp0WlFVTjZSU3hQUVVGUExFbEJRVWtzUTBGQlF5eGhRVUZoTEVWQlFVVXNRMEZCUXp0aFFVTjZRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGZEJRVmNzUTBGQlF6dFpRVU4wUkN4UFFVRlBMRWxCUVVrc1EwRkJReXgxUWtGQmRVSXNSVUZCUlN4RFFVRkRPMkZCUTI1RExFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVjBGQlZ5eERRVUZETEVWQlFVVXNiVUpCUVcxQ08xbEJRM1JGTEU5QlFVOHNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6dGhRVU5zUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRmRCUVZjc1EwRkJRenRaUVVOeVJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1YwRkJWeXhGUVVGRkxGbEJRV0VzUTBGQlF5eERRVUZET3p0WlFVVndSQ3hOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETERKQ1FVRXlRanRuUWtGRGVrTXNlVUpCUVhsQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEhsQ1FVRjVRaXhYUVVGWExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlEzUkdMRU5CUVVNN1NVRkZSQ3haUVVGdFFpeEhRVUZqTzFGQlF5OUNMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVGRSVEN4alFVRlRMRWRCUVhkQ0xFbEJRVWtzUTBGQlF6dEpRVGhST1VNc1EwRkJRenREUVVOR0lpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lMeW9nUkc4Z2JtOTBJR05vWVc1blpTQjBhR1Z6WlNCcGJYQnZjblFnYkdsdVpYTWdkRzhnYldGMFkyZ2daWGgwWlhKdVlXd2diVzlrZFd4bGN5QnBiaUIzWldKd1lXTnJJR052Ym1acFozVnlZWFJwYjI0Z0tpOWNibWx0Y0c5eWRDQXFJR0Z6SUdkeWIyc2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMMmR5YjJzbk8xeHVhVzF3YjNKMElDb2dZWE1nZFdrZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwzVnBKenRjYm1sdGNHOXlkQ0FxSUdGeklFUkhJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzlrWnljN1hHNWNibWx0Y0c5eWRDQjdWVzVwZEhOSVlXNWtiR1Z5ZlNCbWNtOXRJQ2N1TDNWdWFYUnpMV2hoYm1Sc1pYSW5PMXh1YVcxd2IzSjBJSHRuWlhSVGNHeHBkSFJsY2tadmNrTnZiSFZ0Yml3Z1oyVjBVM1JoZEhNc0lFNVBWRUZVU1U5T0xDQlRaWEZEYjJ4VGRHRjBjeXdnVTNCc2FYUjBaWEpHZFc1akxDQlVRVWRUZlNCbWNtOXRJQ2N1TDIxaFkzSnZiVzlzWldOMWJHVW5PMXh1WEc0dktpb2dRMnhoYzNNZ1ptOXlJR2hoYm1Sc2FXNW5JR052Ym5abGNuTnBiMjRnYjJZZ2JtOTBZWFJwYjI0Z2MzbHpkR1Z0Y3lCcGJpQk5ZV055YjIxdmJHVmpkV3hsSUdOdmJIVnRibk1nS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJPYjNSaGRHbHZia052Ym5abGNuUmxjaUJsZUhSbGJtUnpJRlZ1YVhSelNHRnVaR3hsY2lCN1hHNGdJSEJ5YVhaaGRHVWdYM053YkdsMGRHVnlPaUJUY0d4cGRIUmxja1oxYm1NZ2ZDQnVkV3hzSUQwZ2JuVnNiRHRjYmx4dUlDQndjbTkwWldOMFpXUWdaMlYwSUhOd2JHbDBkR1Z5S0NrNklGTndiR2wwZEdWeVJuVnVZeUI3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYM053YkdsMGRHVnlJRDA5UFNCdWRXeHNLVnh1SUNBZ0lDQWdkR2hwY3k1ZmMzQnNhWFIwWlhJZ1BTQm5aWFJUY0d4cGRIUmxja1p2Y2tOdmJIVnRiaWgwYUdsekxtTnZiSFZ0YmlrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgzTndiR2wwZEdWeU8xeHVJQ0I5WEc1Y2JpQWdjSFZpYkdsaklIUnZSbUZ6ZEdFb2RHRnlaMlYwVG05MFlYUnBiMjQ2SUU1UFZFRlVTVTlPS1RvZ1ltOXZiR1ZoYmlCN0lISmxkSFZ5YmlCMFlYSm5aWFJPYjNSaGRHbHZiaUE5UFQwZ1RrOVVRVlJKVDA0dVJrRlRWRUU3SUgxY2JseHVJQ0J3ZFdKc2FXTWdkRzlUWlhCaGNtRjBiM0lvZEdGeVoyVjBUbTkwWVhScGIyNDZJRTVQVkVGVVNVOU9LVG9nWW05dmJHVmhiaUI3SUhKbGRIVnliaUIwWVhKblpYUk9iM1JoZEdsdmJpQTlQVDBnVGs5VVFWUkpUMDR1VTBWUVFWSkJWRTlTT3lCOVhHNWNiaUFnY0hWaWJHbGpJSFJ2U0dWc2JTaDBZWEpuWlhST2IzUmhkR2x2YmpvZ1RrOVVRVlJKVDA0cE9pQmliMjlzWldGdUlIc2djbVYwZFhKdUlIUmhjbWRsZEU1dmRHRjBhVzl1SUQwOVBTQk9UMVJCVkVsUFRpNUlSVXhOT3lCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVOdmJuWmxjblFnWVNCTllXTnliMjF2YkdWamRXeGxJR052YkhWdGJpQm1jbTl0SUVaQlUxUkJJSFJ2SUZORlVFRlNRVlJQVWlCdWIzUmhkR2x2Ymx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2MyVndZWEpoZEc5eUlDQkJJSE53WldOcFptbGpJSE5sY0dGeVlYUnZjaUIwYnlCaVpTQjFjMlZrWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQm1ZWE4wWVVkaGNGTjViV0p2YkNBZ1IyRndJSE41YldKdmJDQnBiaUJHUVZOVVFTd2dKeTBuSUdKNUlHUmxabUYxYkhSY2JpQWdJQ29nUUhKbGRIVnliaUI3UkVjdVEyOXNkVzF1ZlNBZ0lDQWdJQ0FnUVNCdVpYY2dZMjlzZFcxdUlHbHVJRk5GVUVGU1FWUlBVaUJ1YjNSaGRHbHZibHh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0JqYjI1MlpYSjBSbUZ6ZEdGVWIxTmxjR0Z5WVhSdmNpaHpaWEJoY21GMGIzSTZJSE4wY21sdVp5d2dabUZ6ZEdGSFlYQlRlVzFpYjJ3NklITjBjbWx1WnlCOElHNTFiR3dnUFNCdWRXeHNLVG9nUkVjdVEyOXNkVzF1SUh0Y2JpQWdJQ0JwWmlBb1ptRnpkR0ZIWVhCVGVXMWliMndnUFQwOUlHNTFiR3dwWEc0Z0lDQWdJQ0JtWVhOMFlVZGhjRk41YldKdmJDQTlJSFJvYVhNdVpHVm1ZWFZzZEVkaGNGTjViV0p2YkR0Y2JseHVJQ0FnSUdOdmJuTjBJRzVsZDBOdmJIVnRiaUE5SUhSb2FYTXVaMlYwVG1WM1EyOXNkVzF1S0U1UFZFRlVTVTlPTGxORlVFRlNRVlJQVWlrN1hHNGdJQ0FnTHk4Z1lYTnphV2R1SUhSb1pTQjJZV3gxWlhNZ2RHOGdkR2hsSUc1bGQyeDVJR055WldGMFpXUWdaVzF3ZEhrZ1kyOXNkVzF1WEc0Z0lDQWdibVYzUTI5c2RXMXVMbWx1YVhRb0tHbGtlRG9nYm5WdFltVnlLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0JtWVhOMFlWQnZiSGx0WlhJZ1BTQjBhR2x6TG1OdmJIVnRiaTVuWlhRb2FXUjRLVHRjYmlBZ0lDQWdJR052Ym5OMElHWmhjM1JoVFc5dWIyMWxjbk5CY25KaGVTQTlJSFJvYVhNdWMzQnNhWFIwWlhJb1ptRnpkR0ZRYjJ4NWJXVnlLVHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnWm1GemRHRk5iMjV2YldWeWMwRnljbUY1TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQWdJR2xtSUNobVlYTjBZVTF2Ym05dFpYSnpRWEp5WVhsYmFWMGdQVDA5SUdaaGMzUmhSMkZ3VTNsdFltOXNLVnh1SUNBZ0lDQWdJQ0FnSUdaaGMzUmhUVzl1YjIxbGNuTkJjbkpoZVZ0cFhTQTlJRlZ1YVhSelNHRnVaR3hsY2k1ZlpHVm1ZWFZzZEVkaGNGTjViV0p2YkhORWFXTjBMbE5GVUVGU1FWUlBVanRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSEpsZEhWeWJpQm1ZWE4wWVUxdmJtOXRaWEp6UVhKeVlYa3VhbTlwYmloelpYQmhjbUYwYjNJcE8xeHVJQ0FnSUgwcE8xeHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1elpYUlVZV2NvUkVjdVZFRkhVeTVWVGtsVVV5d2dUazlVUVZSSlQwNHVVMFZRUVZKQlZFOVNLVHRjYmlBZ0lDQnVaWGREYjJ4MWJXNHVjMlYwVkdGbktGUkJSMU11YzJWd1lYSmhkRzl5TENCelpYQmhjbUYwYjNJcE8xeHVJQ0FnSUhKbGRIVnliaUJ1WlhkRGIyeDFiVzQ3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1IyVjBJSFJvWlNCM2NtRndjR1Z5SUhOMGNtbHVaM01nWm05eUlFaEZURTBzSUdSbGNHVnVaR2x1WnlCdmJpQjBhR1VnZEhsd1pTQnZaaUIwYUdWY2JpQWdJQ29nYldGamNtOXRiMnhsWTNWc1pTQW9jR1Z3ZEdsa1pTd2dSRTVCTENCU1RrRXBYRzRnSUNBcVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMXRkZlNCQmNuSmhlU0J2WmlCM2NtRndjR1Z5YzF4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCblpYUklaV3h0VjNKaGNIQmxjbk1vS1RvZ2MzUnlhVzVuVzEwZ2UxeHVJQ0FnSUdOdmJuTjBJSEJ5WldacGVDQTlJQ2gwYUdsekxtbHpSRzVoS0NrcElEOGdKMFJPUVRGN0p5QTZYRzRnSUNBZ0lDQW9kR2hwY3k1cGMxSnVZU2dwS1NBL0lDZFNUa0V4ZXljZ09seHVJQ0FnSUNBZ0lDQW9kR2hwY3k1cGMxQmxjSFJwWkdVb0tTa2dQeUFuVUVWUVZFbEVSVEY3SnlBNlhHNGdJQ0FnSUNBZ0lDQWdKMVZ1YTI1dmQyNG5PeUF2THlCMGFHbHpJR05oYzJVZ2MyaHZkV3hrSUdKbElHaGhibVJzWldRZ1lYTWdaWGhqWlhCMGFXOXVZV3hjYmx4dUlDQWdJR2xtSUNod2NtVm1hWGdnUFQwOUlDZFZibXR1YjNkdUp5bGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnblRtVnBkR2hsY2lCd1pYQjBhV1JsTENCdWIzSWdiblZqYkdWdmRHbGtaU2NwTzF4dVhHNGdJQ0FnWTI5dWMzUWdjRzl6ZEdacGVDQTlJQ2Q5SkNRa0p6dGNiaUFnSUNCamIyNXpkQ0JzWldaMFYzSmhjSEJsY2lBOUlDaDBhR2x6TG1selJHNWhLQ2twSUQ4Z0owUW9KeUE2WEc0Z0lDQWdJQ0FvZEdocGN5NXBjMUp1WVNncEtTQS9JQ2RTS0NjZ09pQW5KenNnTHk4Z2JtOGdkM0poY0hCbGNpQm1iM0lnY0dWd2RHbGtaWE5jYmlBZ0lDQmpiMjV6ZENCeWFXZG9kRmR5WVhCd1pYSWdQU0FvZEdocGN5NXBjMFJ1WVNncElIeDhJSFJvYVhNdWFYTlNibUVvS1NrZ1B5QW5LVkFuSURvZ0p5YzdJQzh2SUc1dklIZHlZWEJ3WlhJZ1ptOXlJSEJsY0hScFpHVnpYRzRnSUNBZ2NtVjBkWEp1SUZ0d2NtVm1hWGdzSUd4bFpuUlhjbUZ3Y0dWeUxDQnlhV2RvZEZkeVlYQndaWElzSUhCdmMzUm1hWGhkTzF4dUlDQjlYRzVjYmlBZ0x5OGdRU0JvWld4d1pYSWdablZ1WTNScGIyNGdabTl5SUdOdmJuWmxjblJwYm1jZ2MzUnlhVzVuY3lCMGJ5QklSVXhOWEc0Z0lIQnlhWFpoZEdVZ1kyOXVkbVZ5ZEZSdlNHVnNiVWhsYkhCbGNpaGNiaUFnSUNCemIzVnlZMlZRYjJ4NWJXVnlPaUJ6ZEhKcGJtY3NYRzRnSUNBZ2MyOTFjbU5sUjJGd1UzbHRZbTlzT2lCemRISnBibWNzWEc0Z0lDQWdjSEpsWm1sNE9pQnpkSEpwYm1jc1hHNGdJQ0FnYkdWbWRGZHlZWEJ3WlhJNklITjBjbWx1Wnl4Y2JpQWdJQ0J5YVdkb2RGZHlZWEJ3WlhJNklITjBjbWx1Wnl4Y2JpQWdJQ0J3YjNOMFptbDRPaUJ6ZEhKcGJtZGNiaUFnS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0JqYjI1emRDQnRiMjV2YldWeVFYSnlZWGtnUFNCMGFHbHpMbk53YkdsMGRHVnlLSE52ZFhKalpWQnZiSGx0WlhJcE8xeHVJQ0FnSUdOdmJuTjBJRzF2Ym05dFpYSklaV3h0UVhKeVlYazZJSE4wY21sdVoxdGRJRDBnYlc5dWIyMWxja0Z5Y21GNUxtMWhjQ2dvYlcwNklITjBjbWx1WnlrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0cxdElEMDlQU0J6YjNWeVkyVkhZWEJUZVcxaWIyd3BYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQlZibWwwYzBoaGJtUnNaWEl1WDJSbFptRjFiSFJIWVhCVGVXMWliMnh6UkdsamRDNUlSVXhOTzF4dUlDQWdJQ0FnWld4elpWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1lDUjdiR1ZtZEZkeVlYQndaWEo5Skh0dGJYMGtlM0pwWjJoMFYzSmhjSEJsY24xZ08xeHVJQ0FnSUgwcE8xeHVJQ0FnSUhKbGRIVnliaUJnSkh0d2NtVm1hWGg5Skh0dGIyNXZiV1Z5U0dWc2JVRnljbUY1TG1wdmFXNG9KeTRuS1gwa2UzQnZjM1JtYVhoOVlEdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJEYjI1MlpYSjBJR0VnYzNSeWFXNW5JSGRwZEdnZ1UwVlFRVkpCVkU5U0wwWkJVMVJCSUc1dmRHRjBhVzl1SUhSdklFaEZURTFjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhOdmRYSmpaVkJ2YkhsdFpYSWdJRUVnYzNSeWFXNW5JSFJ2SUdKbElHTnZiblpsY25SbFpGeHVJQ0FnS2lCQWNHRnlZVzBnZTNOMGNtbHVaeUI4SUc1MWJHeDlJSE52ZFhKalpVZGhjRk41YldKdmJDQWdRVzRnYjNCMGFXOXVZV3dnWjJGd0lITjViV0p2YkN3Z2MyVjBJSFJ2WEc0Z0lDQXFJR1JsWm1GMWJIUWdkbUZzZFdWeklDZ25MU2NnWm05eUlFWkJVMVJCSUdGdVpDQW5KeUJtYjNJZ1UwVlFRVkpCVkU5U0tTQjFibXhsYzNNZ2MzQmxZMmxtYVdWa1hHNGdJQ0FxSUVCeVpYUjFjbTRnZTNOMGNtbHVaMzBnSUZSb1pTQjBZWEpuWlhRZ1NFVk1UU0J6ZEhKcGJtZGNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QmpiMjUyWlhKMFUzUnlhVzVuVkc5SVpXeHRLRnh1SUNBZ0lITnZkWEpqWlZCdmJIbHRaWEk2SUhOMGNtbHVaeXhjYmlBZ0lDQnpiM1Z5WTJWSFlYQlRlVzFpYjJ3NklITjBjbWx1WnlCOElHNTFiR3dnUFNCdWRXeHNYRzRnSUNrNklITjBjbWx1WnlCN1hHNGdJQ0FnYVdZZ0tITnZkWEpqWlVkaGNGTjViV0p2YkNBOVBUMGdiblZzYkNsY2JpQWdJQ0FnSUhOdmRYSmpaVWRoY0ZONWJXSnZiQ0E5SUhSb2FYTXVaR1ZtWVhWc2RFZGhjRk41YldKdmJEdGNiaUFnSUNCamIyNXpkQ0JiY0hKbFptbDRMQ0JzWldaMFYzSmhjSEJsY2l3Z2NtbG5hSFJYY21Gd2NHVnlMQ0J3YjNOMFptbDRYU0E5SUhSb2FYTXVaMlYwU0dWc2JWZHlZWEJ3WlhKektDazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMjl1ZG1WeWRGUnZTR1ZzYlVobGJIQmxjaWh6YjNWeVkyVlFiMng1YldWeUxDQnpiM1Z5WTJWSFlYQlRlVzFpYjJ3c0lIQnlaV1pwZUN3Z2JHVm1kRmR5WVhCd1pYSXNJSEpwWjJoMFYzSmhjSEJsY2l3Z2NHOXpkR1pwZUNrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRMjl1ZG1WeWRDQmhJR052YkhWdGJpQjBieUJJUlV4TlhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bklId2diblZzYkgwZ2MyOTFjbU5sUjJGd1UzbHRZbTlzWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJITGtOdmJIVnRibjFjYmlBZ0lDb3ZYRzRnSUhCeWFYWmhkR1VnWTI5dWRtVnlkRlJ2U0dWc2JTaHpiM1Z5WTJWSFlYQlRlVzFpYjJ3NklITjBjbWx1WnlCOElHNTFiR3dnUFNCdWRXeHNLVG9nUkVjdVEyOXNkVzF1SUh0Y2JpQWdJQ0JwWmlBb2MyOTFjbU5sUjJGd1UzbHRZbTlzSUQwOVBTQnVkV3hzS1Z4dUlDQWdJQ0FnYzI5MWNtTmxSMkZ3VTNsdFltOXNJRDBnZEdocGN5NWtaV1poZFd4MFIyRndVM2x0WW05c08xeHVYRzRnSUNBZ1kyOXVjM1FnVzNCeVpXWnBlQ3dnYkdWbWRGZHlZWEJ3WlhJc0lISnBaMmgwVjNKaGNIQmxjaXdnY0c5emRHWnBlRjBnUFNCMGFHbHpMbWRsZEVobGJHMVhjbUZ3Y0dWeWN5Z3BPMXh1WEc0Z0lDQWdZMjl1YzNRZ2JtVjNRMjlzZFcxdUlEMGdkR2hwY3k1blpYUk9aWGREYjJ4MWJXNG9UazlVUVZSSlQwNHVTRVZNVFNrN1hHNGdJQ0FnTHk4Z1lYTnphV2R1SUhSb1pTQjJZV3gxWlhNZ2RHOGdkR2hsSUdWdGNIUjVJR052YkhWdGJseHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1cGJtbDBLQ2hwWkhnNklHNTFiV0psY2lrZ1BUNGdlMXh1SUNBZ0lDQWdZMjl1YzNRZ2MyOTFjbU5sVUc5c2VXMWxjaUE5SUhSb2FYTXVZMjlzZFcxdUxtZGxkQ2hwWkhncE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMjl1ZG1WeWRGUnZTR1ZzYlVobGJIQmxjaWh6YjNWeVkyVlFiMng1YldWeUxDQnpiM1Z5WTJWSFlYQlRlVzFpYjJ3aExDQndjbVZtYVhnc0lHeGxablJYY21Gd2NHVnlMQ0J5YVdkb2RGZHlZWEJ3WlhJc0lIQnZjM1JtYVhncE8xeHVJQ0FnSUgwcE8xeHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1elpYUlVZV2NvUkVjdVZFRkhVeTVWVGtsVVV5d2dUazlVUVZSSlQwNHVTRVZNVFNrN1hHNGdJQ0FnY21WMGRYSnVJRzVsZDBOdmJIVnRianRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGIyNTJaWEowSUZORlVFRlNRVlJQVWlCamIyeDFiVzRnZEc4Z1JrRlRWRUVnYm05MFlYUnBiMjVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWNnZkNCdWRXeHNmU0JtWVhOMFlVZGhjRk41YldKdmJDQlBjSFJwYjI1aGJDQm5ZWEFnYzNsdFltOXNJR1p2Y2lCR1FWTlVRVnh1SUNBZ0tpQkFjbVYwZFhKdUlIdEVSeTVEYjJ4MWJXNTlJQ0JEYjI1MlpYSjBaV1FnWTI5c2RXMXVYRzRnSUNBcUwxeHVJQ0J3Y21sMllYUmxJR052Ym5abGNuUlRaWEJoY21GMGIzSlViMFpoYzNSaEtHWmhjM1JoUjJGd1UzbHRZbTlzT2lCemRISnBibWNnZkNCdWRXeHNJRDBnYm5Wc2JDazZJRVJITGtOdmJIVnRiaUI3WEc0Z0lDQWdhV1lnS0daaGMzUmhSMkZ3VTNsdFltOXNJRDA5UFNCdWRXeHNLVnh1SUNBZ0lDQWdabUZ6ZEdGSFlYQlRlVzFpYjJ3Z1BTQlZibWwwYzBoaGJtUnNaWEl1WDJSbFptRjFiSFJIWVhCVGVXMWliMnh6UkdsamRDNUdRVk5VUVR0Y2JseHVJQ0FnSUdOdmJuTjBJRzVsZDBOdmJIVnRiaUE5SUhSb2FYTXVaMlYwVG1WM1EyOXNkVzF1S0U1UFZFRlVTVTlPTGtaQlUxUkJLVHRjYmlBZ0lDQXZMeUJoYzNOcFoyNGdkR2hsSUhaaGJIVmxjeUIwYnlCMGFHVWdaVzF3ZEhrZ1kyOXNkVzF1WEc0Z0lDQWdibVYzUTI5c2RXMXVMbWx1YVhRb0tHbGtlRG9nYm5WdFltVnlLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0J6WlhCaGNtRjBiM0pRYjJ4NWJXVnlJRDBnZEdocGN5NWpiMngxYlc0dVoyVjBLR2xrZUNrN1hHNGdJQ0FnSUNBdkx5QnBkR1Z0Y3lCallXNGdZbVVnYlc5dWIyMWxjbk1nYjNJZ2MyVndZWEpoZEc5eWMxeHVJQ0FnSUNBZ1kyOXVjM1FnYzJWd1lYSmhkRzl5U1hSbGJYTkJjbkpoZVNBOUlIUm9hWE11YzNCc2FYUjBaWElvYzJWd1lYSmhkRzl5VUc5c2VXMWxjaWs3WEc0Z0lDQWdJQ0JqYjI1emRDQm1ZWE4wWVUxdmJtOXRaWEp6UVhKeVlYazZJSE4wY21sdVoxdGRJRDBnVzEwN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElITmxjR0Z5WVhSdmNrbDBaVzF6UVhKeVlYa3ViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYVhSbGJTQTlJSE5sY0dGeVlYUnZja2wwWlcxelFYSnlZWGxiYVYwN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwZEdWdExteGxibWQwYUNBOVBUMGdNQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHWmhjM1JoVFc5dWIyMWxjbk5CY25KaGVTNXdkWE5vS0daaGMzUmhSMkZ3VTNsdFltOXNJU2s3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb2FYUmxiUzVzWlc1bmRHZ2dQaUF4S1NCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnZEdobElHTmhjMlVnYjJZZ1lTQnRkV3gwYVMxamFHRnlZV04wWlhJZ2JXOXViMjFsY2x4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUcxdmJtOXRaWElnUFNBbld5Y2dLeUJwZEdWdElDc2dKMTBuTzF4dUlDQWdJQ0FnSUNBZ0lHWmhjM1JoVFc5dWIyMWxjbk5CY25KaGVTNXdkWE5vS0cxdmJtOXRaWElwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lHWmhjM1JoVFc5dWIyMWxjbk5CY25KaGVTNXdkWE5vS0dsMFpXMHBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0J5WlhSMWNtNGdabUZ6ZEdGTmIyNXZiV1Z5YzBGeWNtRjVMbXB2YVc0b0p5Y3BPMXh1SUNBZ0lIMHBPMXh1SUNBZ0lHNWxkME52YkhWdGJpNXpaWFJVWVdjb1JFY3VWRUZIVXk1VlRrbFVVeXdnVGs5VVFWUkpUMDR1UmtGVFZFRXBPMXh1SUNBZ0lISmxkSFZ5YmlCdVpYZERiMngxYlc0N1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dJRU52Ym5abGNuUWdTRVZNVFNCemRISnBibWNnZEc4Z1JrRlRWRUV2VTBWUVFWSkJWRTlTWEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCb1pXeHRVRzlzZVcxbGNpQWdJQ0JCSUhOMGNtbHVaeUIwYnlCaVpTQmpiMjUyWlhKMFpXUmNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhSbmRFNXZkR0YwYVc5dUlDQWdJRlJoY21kbGRDQnViM1JoZEdsdmJqb2dSa0ZUVkVFZ2IzSWdVMFZRUVZKQlZFOVNYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCMFozUlRaWEJoY21GMGIzSWdJQ0JQY0hScGIyNWhiQ0IwWVhKblpYUWdjMlZ3WVhKaGRHOXlJQ2htYjNJZ1NFVk1UU0F0UGx4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVp5QjhJRzUxYkd4OUlIUm5kRWRoY0ZONWJXSnZiQ0FnSUU5d2RHbHZibUZzSUhSaGNtZGxkQ0JuWVhBZ2MzbHRZbTlzWEc0Z0lDQXFJRk5GVUVGU1FWUlBVaWxjYmlBZ0lDb2dRSEpsZEhWeWJpQjdjM1J5YVc1bmZTQkRiMjUyWlhKMFpXUWdjM1J5YVc1blhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1kyOXVkbVZ5ZEVobGJHMVViMFpoYzNSaFUyVndZWEpoZEc5eUtGeHVJQ0FnSUdobGJHMVFiMng1YldWeU9pQnpkSEpwYm1jc0lGeHVJQ0FnSUhSbmRFNXZkR0YwYVc5dU9pQnpkSEpwYm1jc0lGeHVJQ0FnSUhSbmRGTmxjR0Z5WVhSdmNqODZJSE4wY21sdVp5d2dYRzRnSUNBZ2RHZDBSMkZ3VTNsdFltOXNQem9nYzNSeWFXNW5YRzRnSUNrNklITjBjbWx1WnlCN1hHNGdJQ0FnYVdZZ0tDRjBaM1JIWVhCVGVXMWliMndwSUh0Y2JpQWdJQ0FnSUhSbmRFZGhjRk41YldKdmJDQTlJQ2gwYUdsekxuUnZSbUZ6ZEdFb2RHZDBUbTkwWVhScGIyNGdZWE1nVGs5VVFWUkpUMDRwS1NBL1hHNGdJQ0FnSUNBZ0lGVnVhWFJ6U0dGdVpHeGxjaTVmWkdWbVlYVnNkRWRoY0ZONWJXSnZiSE5FYVdOMExrWkJVMVJCSURwY2JpQWdJQ0FnSUNBZ1ZXNXBkSE5JWVc1a2JHVnlMbDlrWldaaGRXeDBSMkZ3VTNsdFltOXNjMFJwWTNRdVUwVlFRVkpCVkU5U08xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDZ2hkR2QwVTJWd1lYSmhkRzl5S1NCN1hHNGdJQ0FnSUNCMFozUlRaWEJoY21GMGIzSWdQU0FvZEdocGN5NTBiMFpoYzNSaEtIUm5kRTV2ZEdGMGFXOXVJR0Z6SUU1UFZFRlVTVTlPS1NrZ1B5QW5KeUE2SUhSb2FYTXVjMlZ3WVhKaGRHOXlPMXh1SUNBZ0lIMWNiaUFnSUNCamIyNXpkQ0JvWld4dFYzSmhjSEJsY25OU1pTQTlJQzhvVWx4Y0tIeEVYRndvZkZ4Y0tYeFFLUzluTzF4dUlDQWdJR052Ym5OMElHbHpUblZqYkdWdmRHbGtaU0E5SUdobGJHMVFiMng1YldWeUxuTjBZWEowYzFkcGRHZ29KMFJPUVNjcElIeDhJR2hsYkcxUWIyeDViV1Z5TG5OMFlYSjBjMWRwZEdnb0oxSk9RU2NwTzF4dUlDQWdJQzh2SUdsMFpXMXpJR05oYmlCaVpTQnRiMjV2YldWeWN5QnZjaUJvWld4dGMxeHVJQ0FnSUdOdmJuTjBJR2hsYkcxSmRHVnRjMEZ5Y21GNUlEMGdkR2hwY3k1emNHeHBkSFJsY2lob1pXeHRVRzlzZVcxbGNpazdYRzRnSUNBZ1kyOXVjM1FnZEdkMFRXOXViMjFsY25OQmNuSmhlVG9nYzNSeWFXNW5XMTBnUFNCYlhUdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHaGxiRzFKZEdWdGMwRnljbUY1TG14bGJtZDBhRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnNaWFFnYVhSbGJTQTlJR2hsYkcxSmRHVnRjMEZ5Y21GNVcybGRPMXh1SUNBZ0lDQWdhV1lnS0dselRuVmpiR1Z2ZEdsa1pTbGNiaUFnSUNBZ0lDQWdhWFJsYlNBOUlHbDBaVzB1Y21Wd2JHRmpaU2hvWld4dFYzSmhjSEJsY25OU1pTd2dKeWNwTzF4dUlDQWdJQ0FnYVdZZ0tHbDBaVzBnUFQwOUlGVnVhWFJ6U0dGdVpHeGxjaTVmWkdWbVlYVnNkRWRoY0ZONWJXSnZiSE5FYVdOMExraEZURTBwSUh0Y2JpQWdJQ0FnSUNBZ2RHZDBUVzl1YjIxbGNuTkJjbkpoZVM1d2RYTm9LSFJuZEVkaGNGTjViV0p2YkNFcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBhR2x6TG5SdlJtRnpkR0VvZEdkMFRtOTBZWFJwYjI0Z1lYTWdUazlVUVZSSlQwNHBJQ1ltSUdsMFpXMHViR1Z1WjNSb0lENGdNU2tnZTF4dUlDQWdJQ0FnSUNBdkx5QjBhR1VnWTJGelpTQnZaaUJoSUcxMWJIUnBMV05vWVhKaFkzUmxjaUJ0YjI1dmJXVnlJR052Ym5abGNuUmxaQ0IwYnlCR1FWTlVRVnh1SUNBZ0lDQWdJQ0JqYjI1emRDQnRiMjV2YldWeUlEMGdKMXNuSUNzZ2FYUmxiU0FySUNkZEp6dGNiaUFnSUNBZ0lDQWdkR2QwVFc5dWIyMWxjbk5CY25KaGVTNXdkWE5vS0cxdmJtOXRaWElwTzF4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnZEdkMFRXOXViMjFsY25OQmNuSmhlUzV3ZFhOb0tHbDBaVzBwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHZDBUVzl1YjIxbGNuTkJjbkpoZVM1cWIybHVLSFJuZEZObGNHRnlZWFJ2Y2lrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dJRU52Ym5abGNuUWdTRVZNVFNCamIyeDFiVzRnZEc4Z1JrRlRWRUV2VTBWUVFWSkJWRTlTWEc0Z0lDQXFYRzRnSUNBcUlFQndZWEpoYlNCN2MzUnlhVzVuZlNCMFozUk9iM1JoZEdsdmJpQWdJQ0JVWVhKblpYUWdibTkwWVhScGIyNDZJRVpCVTFSQklHOXlJRk5GVUVGU1FWUlBVbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2RHZDBVMlZ3WVhKaGRHOXlJQ0FnVDNCMGFXOXVZV3dnZEdGeVoyVjBJSE5sY0dGeVlYUnZjaUFvWm05eUlFaEZURTBnTFQ1Y2JpQWdJQ29nUUhCaGNtRnRJSHR6ZEhKcGJtY2dmQ0J1ZFd4c2ZTQjBaM1JIWVhCVGVXMWliMndnSUNCUGNIUnBiMjVoYkNCMFlYSm5aWFFnWjJGd0lITjViV0p2YkZ4dUlDQWdLaUJUUlZCQlVrRlVUMUlwWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJITGtOdmJIVnRibjBnUTI5dWRtVnlkR1ZrSUdOdmJIVnRibHh1SUNBZ0tpOWNiaUFnY0hKcGRtRjBaU0JqYjI1MlpYSjBTR1ZzYlNoMFozUk9iM1JoZEdsdmJqb2djM1J5YVc1bkxDQjBaM1JUWlhCaGNtRjBiM0kvT2lCemRISnBibWNzSUhSbmRFZGhjRk41YldKdmJEODZJSE4wY21sdVp5azZJRVJITGtOdmJIVnRiaUI3WEc0Z0lDQWdMeThnVkdocGN5Qm1kVzVqZEdsdmJpQnRkWE4wSUc1dmRDQmpiMjUwWVdsdUlHTmhiR3h6SUc5bUlHbHpSRzVoS0NrZ1lXNWtJR2x6VW01aEtDa3NJR1p2Y2x4dUlDQWdJQzh2SUhOdmRYSmpaU0JvWld4dElHTnZiSFZ0Ym5NZ2JXRjVJR052Ym5SaGFXNGdVazVCTENCRVRrRWdZVzVrSUZCVUlHRmpjbTl6Y3lCa2FXWm1aWEpsYm5RZ2NtOTNjMXh1SUNBZ0lHTnZibk4wSUc1bGQwTnZiSFZ0YmlBOUlIUm9hWE11WjJWMFRtVjNRMjlzZFcxdUtIUm5kRTV2ZEdGMGFXOXVJR0Z6SUU1UFZFRlVTVTlPS1R0Y2JpQWdJQ0F2THlCaGMzTnBaMjRnZEdobElIWmhiSFZsY3lCMGJ5QjBhR1VnWlcxd2RIa2dZMjlzZFcxdVhHNGdJQ0FnYm1WM1EyOXNkVzF1TG1sdWFYUW9LR2xrZURvZ2JuVnRZbVZ5S1NBOVBpQjdYRzRnSUNBZ0lDQmpiMjV6ZENCb1pXeHRVRzlzZVcxbGNpQTlJSFJvYVhNdVkyOXNkVzF1TG1kbGRDaHBaSGdwTzF4dUlDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyOXVkbVZ5ZEVobGJHMVViMFpoYzNSaFUyVndZWEpoZEc5eUtHaGxiRzFRYjJ4NWJXVnlMQ0IwWjNST2IzUmhkR2x2Yml3Z2RHZDBVMlZ3WVhKaGRHOXlMQ0IwWjNSSFlYQlRlVzFpYjJ3cE8xeHVJQ0FnSUNBZ0x5OGdkMlVnWTJGdWJtOTBJSFZ6WlNCcGMwUnVZU2dwSUc5eUlHbHpVbTVoS0NrZ1ltVmpZWFZ6WlNCemIzVnlZMlVnYUdWc2JTQmpiMngxYlc1eklHTmhibHh1SUNBZ0lDQWdMeThnWTI5dWRHRnBiaUJFVGtFc0lGSk9RU0JoYm1RZ1VGUWdhVzRnWkdsbVptVnlaVzUwSUdObGJHeHpMQ0J6YnlCMGFHVWdZMjl5Y21WemNHOXVaR2x1WjF4dUlDQWdJQ0FnTHk4Z2RHRm5jeUJqWVc1dWIzUWdZbVVnYzJWMElHWnZjaUIwYUdVZ2QyaHZiR1VnWTI5c2RXMXVYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQXZMeUJVUVVkVExtRnNhV2R1WldRZ2FYTWdiV0Z1WkdGMGIzSjVJR1p2Y2lCamIyeDFiVzV6SUc5bUlFNVBWRUZVU1U5T0xrWkJVMVJCSUdGdVpDQk9UMVJCVkVsUFRpNVRSVkJCVWtGVVQxSmNiaUFnSUNCamIyNXpkQ0J6Y0d4cGRIUmxjam9nVTNCc2FYUjBaWEpHZFc1aklEMGdaMlYwVTNCc2FYUjBaWEpHYjNKRGIyeDFiVzRvYm1WM1EyOXNkVzF1S1R0Y2JpQWdJQ0JqYjI1emRDQnpkR0YwY3pvZ1UyVnhRMjlzVTNSaGRITWdQU0JuWlhSVGRHRjBjeWh1WlhkRGIyeDFiVzRzSURVc0lITndiR2wwZEdWeUtUdGNiaUFnSUNCamIyNXpkQ0JoYkdsbmJtVmtJRDBnYzNSaGRITXVjMkZ0WlV4bGJtZDBhQ0EvSUNkVFJWRXVUVk5CSnlBNklDZFRSVkVuTzF4dUlDQWdJRzVsZDBOdmJIVnRiaTV6WlhSVVlXY29WRUZIVXk1aGJHbG5ibVZrTENCaGJHbG5ibVZrS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ1WlhkRGIyeDFiVzQ3WEc0Z0lIMWNibHh1SUNCd2NtbDJZWFJsSUdOdmJuWmxjblJJWld4dFZHOVRaWEJoY21GMGIzSW9LVG9nUkVjdVEyOXNkVzF1SUh0Y2JpQWdJQ0F2THlCVVQwUlBPaUJwYlhCc1pXMWxiblJoZEdsdmNtVjBkWEp1SUhSb2FYTXVaMlYwVG1WM1EyOXNkVzF1S0NrN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVoyVjBUbVYzUTI5c2RXMXVLRTVQVkVGVVNVOU9MbE5GVUVGU1FWUlBVaWs3WEc0Z0lIMWNibHh1SUNBdktpb2dSR2x6Y0dGMFkyaGxjaUJ0WlhSb2IyUWdabTl5SUc1dmRHRjBhVzl1SUdOdmJuWmxjbk5wYjI1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdE9UMVJCVkVsUFRuMGdkR2QwVG05MFlYUnBiMjRnSUNCT2IzUmhkR2x2YmlCM1pTQjNZVzUwSUhSdklHTnZiblpsY25RZ2RHOWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWNnZkNCdWRXeHNmU0IwWjNSVFpYQmhjbUYwYjNJZ0lDQlFiM056YVdKc1pTQnpaWEJoY21GMGIzSmNiaUFnSUNvZ1FISmxkSFZ5YmlCN1JFY3VRMjlzZFcxdWZTQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCRGIyNTJaWEowWldRZ1kyOXNkVzF1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nWTI5dWRtVnlkQ2gwWjNST2IzUmhkR2x2YmpvZ1RrOVVRVlJKVDA0c0lIUm5kRk5sY0dGeVlYUnZjam9nYzNSeWFXNW5JSHdnYm5Wc2JDQTlJRzUxYkd3cE9pQkVSeTVEYjJ4MWJXNGdlMXh1SUNBZ0lDOHZJSEJ2YzNOcFlteGxJR1Y0WTJWd2RHbHZibk5jYmlBZ0lDQnBaaUFvZEdocGN5NXViM1JoZEdsdmJpQTlQVDBnZEdkMFRtOTBZWFJwYjI0cFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjNSbmRDQnViM1JoZEdsdmJpQnBjeUJwYm5aaGJHbGtKeWs3WEc0Z0lDQWdhV1lnS0hSb2FYTXVkRzlUWlhCaGNtRjBiM0lvZEdkMFRtOTBZWFJwYjI0cElDWW1JSFJuZEZObGNHRnlZWFJ2Y2lBOVBUMGdiblZzYkNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduZEdkMElITmxjR0Z5WVhSdmNpQnBjeUJ1YjNRZ2MzQmxZMmxtYVdWa0p5azdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NXBjMFpoYzNSaEtDa2dKaVlnZEdocGN5NTBiMU5sY0dGeVlYUnZjaWgwWjNST2IzUmhkR2x2YmlrZ0ppWWdkR2QwVTJWd1lYSmhkRzl5SUNFOVBTQnVkV3hzS1Z4dUlDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyOXVkbVZ5ZEVaaGMzUmhWRzlUWlhCaGNtRjBiM0lvZEdkMFUyVndZWEpoZEc5eUtUdGNiaUFnSUNCbGJITmxJR2xtSUNnb2RHaHBjeTVwYzBaaGMzUmhLQ2tnZkh3Z2RHaHBjeTVwYzFObGNHRnlZWFJ2Y2lncEtTQW1KaUIwYUdsekxuUnZTR1ZzYlNoMFozUk9iM1JoZEdsdmJpa3BYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYjI1MlpYSjBWRzlJWld4dEtDazdYRzRnSUNBZ1pXeHpaU0JwWmlBb2RHaHBjeTVwYzFObGNHRnlZWFJ2Y2lncElDWW1JSFJvYVhNdWRHOUdZWE4wWVNoMFozUk9iM1JoZEdsdmJpa3BYRzRnSUNBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYjI1MlpYSjBVMlZ3WVhKaGRHOXlWRzlHWVhOMFlTZ3BPMXh1SUNBZ0lHVnNjMlVnYVdZZ0tIUm9hWE11YVhOSVpXeHRLQ2tnSmlZZ2RHaHBjeTUwYjBaaGMzUmhLSFJuZEU1dmRHRjBhVzl1S1NrZ0x5OGdkR2hsSUdOaGMyVWdiMllnU0VWTVRWeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMjl1ZG1WeWRFaGxiRzBvZEdkMFRtOTBZWFJwYjI0cE8xeHVJQ0FnSUdWc2MyVWdhV1lnS0hSb2FYTXVhWE5JWld4dEtDa2dKaVlnZEdocGN5NTBiMU5sY0dGeVlYUnZjaWgwWjNST2IzUmhkR2x2YmlrcFhHNGdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWpiMjUyWlhKMFNHVnNiU2gwWjNST2IzUmhkR2x2Yml3Z2RHZDBVMlZ3WVhKaGRHOXlJU2s3WEc0Z0lDQWdaV3h6WlZ4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RPYjNRZ2MzVndjRzl5ZEdWa0lHTnZiblpsY25OcGIyNGdKeUFyWEc0Z0lDQWdJQ0FnSUdCbWNtOXRJSE52ZFhKalpTQnViM1JoZEdsdmJpQW5KSHQwYUdsekxtNXZkR0YwYVc5dWZTY2dkRzhnZEdGeVoyVjBJRzV2ZEdGMGFXOXVJQ2NrZTNSbmRFNXZkR0YwYVc5dWZTY3VZQ2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWTI5dWMzUnlkV04wYjNJb1kyOXNPaUJFUnk1RGIyeDFiVzRwSUh0Y2JpQWdJQ0J6ZFhCbGNpaGpiMndwTzF4dUlDQjlYRzU5WEc0aVhYMD0iLCJpbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgZGV0ZWN0QWxwaGFiZXQsIGdldFNwbGl0dGVyRm9yQ29sdW1uLCBnZXRTdGF0cywgc3BsaXR0ZXJBc0Zhc3RhIH0gZnJvbSAnLi9tYWNyb21vbGVjdWxlJztcbi8qKiBDbGFzcyBmb3IgaGFuZGxpbmcgbm90YXRpb24gdW5pdHMgaW4gTWFjcm9tb2xlY3VsZSBjb2x1bW5zICovXG5leHBvcnQgY2xhc3MgVW5pdHNIYW5kbGVyIHtcbiAgICBzdGF0aWMgc2V0VW5pdHNUb0Zhc3RhQ29sdW1uKGNvbCkge1xuICAgICAgICBpZiAoY29sLnNlbVR5cGUgIT09IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFzdGEgY29sdW1uIG11c3QgYmUgTUFDUk9NT0xFQ1VMRScpO1xuICAgICAgICBjb25zdCBzdGF0cyA9IGdldFN0YXRzKGNvbCwgNSwgc3BsaXR0ZXJBc0Zhc3RhKTtcbiAgICAgICAgY29uc3QgYWxpZ25lZCA9IHN0YXRzLnNhbWVMZW5ndGggPyAnU0VRLk1TQScgOiAnU0VRJztcbiAgICAgICAgY29uc3QgYWxwaGFiZXQgPSBkZXRlY3RBbHBoYWJldChzdGF0cyk7XG4gICAgICAgIGNvbC5zZXRUYWcoREcuVEFHUy5VTklUUywgXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovKTtcbiAgICAgICAgY29sLnNldFRhZyhcImFsaWduZWRcIiAvKiBUQUdTLmFsaWduZWQgKi8sIGFsaWduZWQpO1xuICAgICAgICBjb2wuc2V0VGFnKFwiYWxwaGFiZXRcIiAvKiBUQUdTLmFscGhhYmV0ICovLCBhbHBoYWJldCk7XG4gICAgfVxuICAgIGdldCB1bml0cygpIHsgcmV0dXJuIHRoaXMuX3VuaXRzOyB9XG4gICAgZ2V0IGNvbHVtbigpIHsgcmV0dXJuIHRoaXMuX2NvbHVtbjsgfVxuICAgIGdldCBub3RhdGlvbigpIHsgcmV0dXJuIHRoaXMuX25vdGF0aW9uOyB9XG4gICAgZ2V0IGRlZmF1bHRHYXBTeW1ib2woKSB7IHJldHVybiB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sOyB9XG4gICAgZ2V0IHNlcGFyYXRvcigpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBzZXBhcmF0b3IgPSAoX2EgPSB0aGlzLmNvbHVtbi5nZXRUYWcoXCJzZXBhcmF0b3JcIiAvKiBUQUdTLnNlcGFyYXRvciAqLykpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHRoaXMubm90YXRpb24gPT09IFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovICYmIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXBhcmF0b3IgaXMgbWFuZGF0b3J5ICBmb3IgY29sdW1uICcke3RoaXMuY29sdW1uLm5hbWV9JyBvZiBub3RhdGlvbiAnJHt0aGlzLm5vdGF0aW9ufScuYCk7XG4gICAgICAgIHJldHVybiBzZXBhcmF0b3I7XG4gICAgfVxuICAgIGdldCBhbGlnbmVkKCkge1xuICAgICAgICBjb25zdCBhbGlnbmVkID0gdGhpcy5jb2x1bW4uZ2V0VGFnKFwiYWxpZ25lZFwiIC8qIFRBR1MuYWxpZ25lZCAqLyk7XG4gICAgICAgIC8vIFRBR1MuYWxpZ25lZCBpcyBtYW5kYXRvcnkgZm9yIGNvbHVtbnMgb2YgTk9UQVRJT04uRkFTVEEgYW5kIE5PVEFUSU9OLlNFUEFSQVRPUlxuICAgICAgICBpZiAoIWFsaWduZWQgJiYgKHRoaXMuaXNGYXN0YSgpIHx8IHRoaXMuaXNTZXBhcmF0b3IoKSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhZyBhbGlnbmVkIG5vdCBzZXQnKTtcbiAgICAgICAgcmV0dXJuIGFsaWduZWQ7XG4gICAgfVxuICAgIC8qKiBBbHBoYWJldCBuYW1lICh1cHBlciBjYXNlKSAqL1xuICAgIGdldCBhbHBoYWJldCgpIHtcbiAgICAgICAgY29uc3QgYWxwaGFiZXQgPSB0aGlzLmNvbHVtbi5nZXRUYWcoXCJhbHBoYWJldFwiIC8qIFRBR1MuYWxwaGFiZXQgKi8pO1xuICAgICAgICAvLyBUQUdTLmFscGhhYmV0IGlzIG1hbmRhdG9yeSBmb3IgY29sdW1ucyBvZiBOT1RBVElPTi5GQVNUQSBhbmQgTk9UQVRJT04uU0VQQVJBVE9SXG4gICAgICAgIGlmICghYWxwaGFiZXQgJiYgKHRoaXMuaXNGYXN0YSgpIHx8IHRoaXMuaXNTZXBhcmF0b3IoKSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RhZyBhbHBoYWJldCBub3Qgc2V0Jyk7XG4gICAgICAgIHJldHVybiBhbHBoYWJldDtcbiAgICB9XG4gICAgZ2V0QWxwaGFiZXRTaXplKCkge1xuICAgICAgICBpZiAodGhpcy5ub3RhdGlvbiA9PSBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovIHx8IHRoaXMuYWxwaGFiZXQgPT0gXCJVTlwiIC8qIEFMUEhBQkVULlVOICovKSB7XG4gICAgICAgICAgICBjb25zdCBhbHBoYWJldFNpemVTdHIgPSB0aGlzLmNvbHVtbi5nZXRUYWcoXCIuYWxwaGFiZXRTaXplXCIgLyogVEFHUy5hbHBoYWJldFNpemUgKi8pO1xuICAgICAgICAgICAgbGV0IGFscGhhYmV0U2l6ZTtcbiAgICAgICAgICAgIGlmIChhbHBoYWJldFNpemVTdHIpIHtcbiAgICAgICAgICAgICAgICBhbHBoYWJldFNpemUgPSBwYXJzZUludChhbHBoYWJldFNpemVTdHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIGFscGhhYmV0U2l6ZSBvbiBkZW1hbmRcbiAgICAgICAgICAgICAgICBjb25zdCBzcGxpdHRlciA9IGdldFNwbGl0dGVyRm9yQ29sdW1uKHRoaXMuY29sdW1uKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0cyA9IGdldFN0YXRzKHRoaXMuY29sdW1uLCAxLCBzcGxpdHRlcik7XG4gICAgICAgICAgICAgICAgYWxwaGFiZXRTaXplID0gT2JqZWN0LmtleXMoc3RhdHMuZnJlcSkubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFscGhhYmV0U2l6ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5hbHBoYWJldCkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJQVFwiIC8qIEFMUEhBQkVULlBUICovOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjA7XG4gICAgICAgICAgICAgICAgY2FzZSBcIkROQVwiIC8qIEFMUEhBQkVULkROQSAqLzpcbiAgICAgICAgICAgICAgICBjYXNlIFwiUk5BXCIgLyogQUxQSEFCRVQuUk5BICovOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDtcbiAgICAgICAgICAgICAgICBjYXNlICdOVCc6XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5leHBlY3RlZCBhbHBoYWJldCAnTlQnLmApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgYWxwaGFiZXQgJyR7dGhpcy5hbHBoYWJldH0nLmApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGdldEFscGhhYmV0SXNNdWx0aWNoYXIoKSB7XG4gICAgICAgIGlmICh0aGlzLm5vdGF0aW9uID09IFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi8gfHwgdGhpcy5hbHBoYWJldCA9PSBcIlVOXCIgLyogQUxQSEFCRVQuVU4gKi8pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW4uZ2V0VGFnKFwiLmFscGhhYmV0SXNNdWx0aWNoYXJcIiAvKiBUQUdTLmFscGhhYmV0SXNNdWx0aWNoYXIgKi8pID09ICd0cnVlJztcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpc0Zhc3RhKCkgeyByZXR1cm4gdGhpcy5ub3RhdGlvbiA9PT0gXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovOyB9XG4gICAgaXNTZXBhcmF0b3IoKSB7IHJldHVybiB0aGlzLm5vdGF0aW9uID09PSBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLzsgfVxuICAgIGlzSGVsbSgpIHsgcmV0dXJuIHRoaXMubm90YXRpb24gPT09IFwiaGVsbVwiIC8qIE5PVEFUSU9OLkhFTE0gKi87IH1cbiAgICBpc1JuYSgpIHsgcmV0dXJuIHRoaXMuYWxwaGFiZXQgPT09IFwiUk5BXCIgLyogQUxQSEFCRVQuUk5BICovOyB9XG4gICAgaXNEbmEoKSB7IHJldHVybiB0aGlzLmFscGhhYmV0ID09PSBcIkROQVwiIC8qIEFMUEhBQkVULkROQSAqLzsgfVxuICAgIGlzUGVwdGlkZSgpIHsgcmV0dXJuIHRoaXMuYWxwaGFiZXQgPT09IFwiUFRcIiAvKiBBTFBIQUJFVC5QVCAqLzsgfVxuICAgIGlzTXNhKCkgeyByZXR1cm4gdGhpcy5hbGlnbmVkID8gdGhpcy5hbGlnbmVkLnRvVXBwZXJDYXNlKCkuaW5jbHVkZXMoJ01TQScpIDogZmFsc2U7IH1cbiAgICAvKiogQXNzb2NpYXRlIG5vdGF0aW9uIHR5cGVzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdW5pdHMgKi9cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtOT1RBVElPTn0gICAgIE5vdGF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgdW5pdHMgdHlwZVxuICAgICAqL1xuICAgIGdldE5vdGF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy51bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJmYXN0YVwiIC8qIE5PVEFUSU9OLkZBU1RBICovKSlcbiAgICAgICAgICAgIHJldHVybiBcImZhc3RhXCIgLyogTk9UQVRJT04uRkFTVEEgKi87XG4gICAgICAgIGVsc2UgaWYgKHRoaXMudW5pdHMudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovKSlcbiAgICAgICAgICAgIHJldHVybiBcInNlcGFyYXRvclwiIC8qIE5PVEFUSU9OLlNFUEFSQVRPUiAqLztcbiAgICAgICAgZWxzZSBpZiAodGhpcy51bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLykpXG4gICAgICAgICAgICByZXR1cm4gXCJoZWxtXCIgLyogTk9UQVRJT04uSEVMTSAqLztcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb2x1bW4gJyR7dGhpcy5jb2x1bW4ubmFtZX0nIGhhcyB1bmV4cGVjdGVkIG5vdGF0aW9uICcke3RoaXMudW5pdHN9Jy5gKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgbmV3IGVtcHR5IGNvbHVtbiBvZiB0aGUgc3BlY2lmaWVkIG5vdGF0aW9uIHR5cGUgYW5kIHRoZSBzYW1lXG4gICAgICogbGVuZ3RoIGFzIGNvbHVtblxuICAgICAqXG4gICAgICogQHBhcmFtIHtOT1RBVElPTn0gdGFyZ2V0Tm90YXRpb25cbiAgICAgKiBAcmV0dXJuIHtERy5Db2x1bW59XG4gICAgICovXG4gICAgZ2V0TmV3Q29sdW1uKHRhcmdldE5vdGF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuY29sdW1uO1xuICAgICAgICBjb25zdCBsZW4gPSBjb2wubGVuZ3RoO1xuICAgICAgICBjb25zdCBuYW1lID0gdGFyZ2V0Tm90YXRpb24udG9Mb3dlckNhc2UoKSArICcoJyArIGNvbC5uYW1lICsgJyknO1xuICAgICAgICBjb25zdCBuZXdDb2xOYW1lID0gY29sLmRhdGFGcmFtZS5jb2x1bW5zLmdldFVudXNlZE5hbWUobmFtZSk7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IERHLkNvbHVtbi5mcm9tTGlzdCgnc3RyaW5nJywgbmV3Q29sTmFtZSwgbmV3IEFycmF5KGxlbikuZmlsbCgnJykpO1xuICAgICAgICBuZXdDb2x1bW4uc2VtVHlwZSA9IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRTtcbiAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhERy5UQUdTLlVOSVRTLCB0YXJnZXROb3RhdGlvbik7XG4gICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoREcuVEFHUy5DRUxMX1JFTkRFUkVSLCAnTWFjcm9tb2xlY3VsZScpO1xuICAgICAgICBjb25zdCBzcmNBbGlnbmVkID0gY29sLmdldFRhZyhcImFsaWduZWRcIiAvKiBUQUdTLmFsaWduZWQgKi8pO1xuICAgICAgICBpZiAoc3JjQWxpZ25lZClcbiAgICAgICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoXCJhbGlnbmVkXCIgLyogVEFHUy5hbGlnbmVkICovLCBzcmNBbGlnbmVkKTtcbiAgICAgICAgY29uc3Qgc3JjQWxwaGFiZXQgPSBjb2wuZ2V0VGFnKFwiYWxwaGFiZXRcIiAvKiBUQUdTLmFscGhhYmV0ICovKTtcbiAgICAgICAgaWYgKHNyY0FscGhhYmV0KVxuICAgICAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhcImFscGhhYmV0XCIgLyogVEFHUy5hbHBoYWJldCAqLywgc3JjQWxwaGFiZXQpO1xuICAgICAgICBsZXQgc3JjQWxwaGFiZXRTaXplID0gY29sLmdldFRhZyhcIi5hbHBoYWJldFNpemVcIiAvKiBUQUdTLmFscGhhYmV0U2l6ZSAqLyk7XG4gICAgICAgIGlmIChzcmNBbHBoYWJldFNpemUpXG4gICAgICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKFwiLmFscGhhYmV0U2l6ZVwiIC8qIFRBR1MuYWxwaGFiZXRTaXplICovLCBzcmNBbHBoYWJldFNpemUpO1xuICAgICAgICBjb25zdCBzcmNBbHBoYWJldElzTXVsdGljaGFyID0gY29sLmdldFRhZyhcIi5hbHBoYWJldElzTXVsdGljaGFyXCIgLyogVEFHUy5hbHBoYWJldElzTXVsdGljaGFyICovKTtcbiAgICAgICAgaWYgKHNyY0FscGhhYmV0SXNNdWx0aWNoYXIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIG5ld0NvbHVtbi5zZXRUYWcoXCIuYWxwaGFiZXRJc011bHRpY2hhclwiIC8qIFRBR1MuYWxwaGFiZXRJc011bHRpY2hhciAqLywgc3JjQWxwaGFiZXRJc011bHRpY2hhcik7XG4gICAgICAgIGlmICh0YXJnZXROb3RhdGlvbiA9PSBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovKSB7XG4gICAgICAgICAgICBzcmNBbHBoYWJldFNpemUgPSB0aGlzLmdldEFscGhhYmV0U2l6ZSgpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBuZXdDb2x1bW4uc2V0VGFnKFwiLmFscGhhYmV0U2l6ZVwiIC8qIFRBR1MuYWxwaGFiZXRTaXplICovLCBzcmNBbHBoYWJldFNpemUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIG5ldyBlbXB0eSBjb2x1bW4gdXNpbmcgdGVtcGxhdGVDb2wgYXMgYSB0ZW1wbGF0ZVxuICAgICAqXG4gICAgICogQHBhcmFtIHtERy5Db2x1bW59IHRlbXBsYXRlQ29sICB0aGUgcHJvcGVydGllcyBhbmQgdW5pdHMgb2YgdGhpcyBjb2x1bW4gYXJlIHVzZWQgYXMgYVxuICAgICAqIHRlbXBsYXRlIHRvIGJ1aWxkIHRoZSBuZXcgb25lXG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXROZXdDb2x1bW4odGVtcGxhdGVDb2wpIHtcbiAgICAgICAgY29uc3QgY29sID0gbmV3IFVuaXRzSGFuZGxlcih0ZW1wbGF0ZUNvbCk7XG4gICAgICAgIGNvbnN0IHRhcmdldE5vdGF0aW9uID0gY29sLm5vdGF0aW9uO1xuICAgICAgICByZXR1cm4gY29sLmdldE5ld0NvbHVtbih0YXJnZXROb3RhdGlvbik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgaGVscGVyIGZ1bmN0aW9uIGNoZWNraW5nIHRoZSB2YWxpZGl0eSBvZiB0aGUgJ3VuaXRzJyBzdHJpbmdcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1bml0cyAgdGhlIHN0cmluZyB0byBiZSB2YWxpZGF0ZWRcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufVxuICAgICAqL1xuICAgIHN0YXRpYyB1bml0c1N0cmluZ0lzVmFsaWQodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSB1bml0cy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBwcmVmaXhlcyA9IFtcImZhc3RhXCIgLyogTk9UQVRJT04uRkFTVEEgKi8sIFwic2VwYXJhdG9yXCIgLyogTk9UQVRJT04uU0VQQVJBVE9SICovLCBcImhlbG1cIiAvKiBOT1RBVElPTi5IRUxNICovXTtcbiAgICAgICAgY29uc3QgcG9zdGZpeGVzID0gWydybmEnLCAnZG5hJywgJ3B0J107XG4gICAgICAgIGNvbnN0IHByZWZpeENyaXRlcmlvbiA9IHByZWZpeGVzLnNvbWUoKHApID0+IHVuaXRzLnN0YXJ0c1dpdGgocC50b0xvd2VyQ2FzZSgpKSk7XG4gICAgICAgIHJldHVybiBwcmVmaXhDcml0ZXJpb247XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdCBhIG5ldyBjb2x1bW4gb2Ygc2VtYW50aWMgdHlwZSBNQUNST01PTEVDVUxFIGZyb20gdGhlIGxpc3Qgb2ZcbiAgICAgKiBzcGVjaWZpZWQgcGFyYW1ldGVyc1xuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9ICAgIGxlbiAgdGhlIGxlbmd0aCBvZiB0aGUgbmV3IGNvbHVtblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSAgICBuYW1lICB0aGUgbmFtZSBvZiB0aGUgbmV3IGNvbHVtblxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSAgICB1bml0cyAgdGhlIHVuaXRzIG9mIHRoZSBuZXcgY29sdW1uXG4gICAgICogQHJldHVybiB7REcuQ29sdW1ufVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXROZXdDb2x1bW5Gcm9tUGFyYW1zKGxlbiwgbmFtZSwgdW5pdHMpIHtcbiAgICAgICAgLy8gV0FSTklORzogaW4gdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBpcyBpbXBvc3NpYmxlIHRvIHZlcmlmeSB0aGUgdW5pcXVlbmVzc1xuICAgICAgICAvLyBvZiB0aGUgbmV3IGNvbHVtbidzIG5hbWVcbiAgICAgICAgLy8gVE9ETzogdmVyaWZ5IHRoZSB2YWxpZGl0eSBvZiB1bml0cyBwYXJhbWV0ZXJcbiAgICAgICAgaWYgKCFVbml0c0hhbmRsZXIudW5pdHNTdHJpbmdJc1ZhbGlkKHVuaXRzKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmb3JtYXQgb2YgXFwndW5pdHNcXCcgcGFyYW1ldGVyJyk7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbiA9IERHLkNvbHVtbi5mcm9tTGlzdCgnc3RyaW5nJywgbmFtZSwgbmV3IEFycmF5KGxlbikuZmlsbCgnJykpO1xuICAgICAgICBuZXdDb2x1bW4uc2VtVHlwZSA9IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRTtcbiAgICAgICAgbmV3Q29sdW1uLnNldFRhZyhERy5UQUdTLlVOSVRTLCB1bml0cyk7XG4gICAgICAgIHJldHVybiBuZXdDb2x1bW47XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGNvbCkge1xuICAgICAgICB0aGlzLl9jb2x1bW4gPSBjb2w7XG4gICAgICAgIGNvbnN0IHVuaXRzID0gdGhpcy5fY29sdW1uLnRhZ3NbREcuVEFHUy5VTklUU107XG4gICAgICAgIGlmICh1bml0cyAhPT0gbnVsbClcbiAgICAgICAgICAgIHRoaXMuX3VuaXRzID0gdW5pdHM7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5pdHMgYXJlIG5vdCBzcGVjaWZpZWQgaW4gY29sdW1uJyk7XG4gICAgICAgIHRoaXMuX25vdGF0aW9uID0gdGhpcy5nZXROb3RhdGlvbigpO1xuICAgICAgICB0aGlzLl9kZWZhdWx0R2FwU3ltYm9sID0gKHRoaXMuaXNGYXN0YSgpKSA/IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkZBU1RBIDpcbiAgICAgICAgICAgICh0aGlzLmlzSGVsbSgpKSA/IFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LkhFTE0gOlxuICAgICAgICAgICAgICAgIFVuaXRzSGFuZGxlci5fZGVmYXVsdEdhcFN5bWJvbHNEaWN0LlNFUEFSQVRPUjtcbiAgICAgICAgaWYgKCF0aGlzLmNvbHVtbi50YWdzLmhhcyhcImFsaWduZWRcIiAvKiBUQUdTLmFsaWduZWQgKi8pKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0Zhc3RhKCkgfHwgdGhpcy5pc1NlcGFyYXRvcigpKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRm9yIGNvbHVtbiAnJHt0aGlzLmNvbHVtbi5uYW1lfScgb2Ygbm90YXRpb24gJyR7dGhpcy5ub3RhdGlvbn0nIGAgK1xuICAgICAgICAgICAgICAgICAgICBgdGFnICcke1wiYWxpZ25lZFwiIC8qIFRBR1MuYWxpZ25lZCAqL30nIGlzIG1hbmRhdG9yeS5gKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAoIXRoaXMuY29sdW1uLnRhZ3MuaGFzKFRBR1MuYWxwaGFiZXRTaXplKSkge1xuICAgICAgICAvLyAgIGlmICh0aGlzLmlzSGVsbSgpKVxuICAgICAgICAvLyAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3IgY29sdW1uICcke3RoaXMuY29sdW1uLm5hbWV9JyBvZiBub3RhdGlvbiAnJHt0aGlzLm5vdGF0aW9ufScgYCArXG4gICAgICAgIC8vICAgICAgIGB0YWcgJyR7VEFHUy5hbHBoYWJldFNpemV9JyBpcyBtYW5kYXRvcnkuYCk7XG4gICAgICAgIC8vICAgZWxzZSBpZiAoWydVTiddLmluY2x1ZGVzKHRoaXMuYWxwaGFiZXQpKVxuICAgICAgICAvLyAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3IgY29sdW1uICcke3RoaXMuY29sdW1uLm5hbWV9JyBvZiBhbHBoYWJldCAnJHt0aGlzLmFscGhhYmV0fScgYCArXG4gICAgICAgIC8vICAgICAgIGB0YWcgJyR7VEFHUy5hbHBoYWJldFNpemV9JyBpcyBtYW5kYXRvcnkuYCk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgaWYgKCF0aGlzLmNvbHVtbi50YWdzLmhhcyhcIi5hbHBoYWJldElzTXVsdGljaGFyXCIgLyogVEFHUy5hbHBoYWJldElzTXVsdGljaGFyICovKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNIZWxtKCkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb3IgY29sdW1uICcke3RoaXMuY29sdW1uLm5hbWV9JyBvZiBub3RhdGlvbiAnJHt0aGlzLm5vdGF0aW9ufScgYCArXG4gICAgICAgICAgICAgICAgICAgIGB0YWcgJyR7XCIuYWxwaGFiZXRJc011bHRpY2hhclwiIC8qIFRBR1MuYWxwaGFiZXRJc011bHRpY2hhciAqL30nIGlzIG1hbmRhdG9yeS5gKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKFsnVU4nXS5pbmNsdWRlcyh0aGlzLmFscGhhYmV0KSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZvciBjb2x1bW4gJyR7dGhpcy5jb2x1bW4ubmFtZX0nIG9mIGFscGhhYmV0ICcke3RoaXMuYWxwaGFiZXR9JyBgICtcbiAgICAgICAgICAgICAgICAgICAgYHRhZyAnJHtcIi5hbHBoYWJldElzTXVsdGljaGFyXCIgLyogVEFHUy5hbHBoYWJldElzTXVsdGljaGFyICovfScgaXMgbWFuZGF0b3J5LmApO1xuICAgICAgICB9XG4gICAgfVxufVxuVW5pdHNIYW5kbGVyLl9kZWZhdWx0R2FwU3ltYm9sc0RpY3QgPSB7XG4gICAgSEVMTTogJyonLFxuICAgIFNFUEFSQVRPUjogJycsXG4gICAgRkFTVEE6ICctJyxcbn07XG5Vbml0c0hhbmRsZXIuUGVwdGlkZUZhc3RhQWxwaGFiZXQgPSBuZXcgU2V0KFtcbiAgICAnRycsICdMJywgJ1knLCAnUycsICdFJywgJ1EnLCAnRCcsICdOJywgJ0YnLCAnQScsXG4gICAgJ0snLCAnUicsICdIJywgJ0MnLCAnVicsICdQJywgJ1cnLCAnSScsICdNJywgJ1QnLFxuXSk7XG5Vbml0c0hhbmRsZXIuRG5hRmFzdGFBbHBoYWJldCA9IG5ldyBTZXQoWydBJywgJ0MnLCAnRycsICdUJ10pO1xuVW5pdHNIYW5kbGVyLlJuYUZhc3RhQWxwaGFiZXQgPSBuZXcgU2V0KFsnQScsICdDJywgJ0cnLCAnVSddKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRXNXBkSE10YUdGdVpHeGxjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkluVnVhWFJ6TFdoaGJtUnNaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNUMEZCVHl4TFFVRkxMRVZCUVVVc1RVRkJUU3hwUWtGQmFVSXNRMEZCUXp0QlFVVjBReXhQUVVGUExFVkJSVXdzWTBGQll5eEZRVU5rTEc5Q1FVRnZRaXhGUVVOd1FpeFJRVUZSTEVWQlIxSXNaVUZCWlN4RlFVZG9RaXhOUVVGTkxHbENRVUZwUWl4RFFVRkRPMEZCUlhwQ0xHbEZRVUZwUlR0QlFVTnFSU3hOUVVGTkxFOUJRVThzV1VGQldUdEpRV3RDYUVJc1RVRkJUU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRWRCUVdNN1VVRkRhRVFzU1VGQlNTeEhRVUZITEVOQlFVTXNUMEZCVHl4TFFVRkxMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllUdFpRVU14UXl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExHOURRVUZ2UXl4RFFVRkRMRU5CUVVNN1VVRkZlRVFzVFVGQlRTeExRVUZMTEVkQlFXZENMRkZCUVZFc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEdWQlFXVXNRMEZCUXl4RFFVRkRPMUZCUXpkRUxFMUJRVTBzVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRPMUZCUTNKRUxFMUJRVTBzVVVGQlVTeEhRVUZITEdOQlFXTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVWMlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5d3JRa0ZCYVVJc1EwRkJRenRSUVVNeFF5eEhRVUZITEVOQlFVTXNUVUZCVFN3clFrRkJaU3hQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5zUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hwUTBGQlowSXNVVUZCVVN4RFFVRkRMRU5CUVVNN1NVRkRkRU1zUTBGQlF6dEpRVVZFTEVsQlFXTXNTMEZCU3l4TFFVRmhMRTlCUVU4c1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGY2tRc1NVRkJZeXhOUVVGTkxFdEJRV2RDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03U1VGRk1VUXNTVUZCVnl4UlFVRlJMRXRCUVdVc1QwRkJUeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVXhSQ3hKUVVGWExHZENRVUZuUWl4TFFVRmhMRTlCUVU4c1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWNFJTeEpRVUZYTEZOQlFWTTdPMUZCUTJ4Q0xFMUJRVTBzVTBGQlV5eEhRVUYxUWl4TlFVRkJMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeHJRMEZCWjBJc2JVTkJRVWtzVTBGQlV5eERRVUZETzFGQlEzUkdMRWxCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzZVVOQlFYVkNMRWxCUVVrc1UwRkJVeXhMUVVGTExGTkJRVk03V1VGRGFrVXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXgxUTBGQmRVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxHdENRVUZyUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU01Unl4UFFVRlBMRk5CUVZNc1EwRkJRenRKUVVOdVFpeERRVUZETzBsQlJVUXNTVUZCVnl4UFFVRlBPMUZCUTJoQ0xFMUJRVTBzVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3c0UWtGQll5eERRVUZETzFGQlJXcEVMR2xHUVVGcFJqdFJRVU5xUml4SlFVRkpMRU5CUVVNc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4SlFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF6dFpRVU53UkN4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRU5CUVVNN1VVRkZla01zVDBGQlR5eFBRVUZQTEVOQlFVTTdTVUZEYWtJc1EwRkJRenRKUVVWRUxHbERRVUZwUXp0SlFVTnFReXhKUVVGWExGRkJRVkU3VVVGRGFrSXNUVUZCVFN4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEdkRFFVRmxMRU5CUVVNN1VVRkZia1FzYTBaQlFXdEdPMUZCUTJ4R0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFbEJRVWtzU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRPMWxCUTNKRUxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNjMEpCUVhOQ0xFTkJRVU1zUTBGQlF6dFJRVVV4UXl4UFFVRlBMRkZCUVZFc1EwRkJRenRKUVVOc1FpeERRVUZETzBsQlJVMHNaVUZCWlR0UlFVTndRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTERoQ1FVRnBRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTERCQ1FVRmxMRVZCUVVVN1dVRkRiRVVzVFVGQlRTeGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxIbERRVUZ0UWl4RFFVRkRPMWxCUXpsRUxFbEJRVWtzV1VGQmIwSXNRMEZCUXp0WlFVTjZRaXhKUVVGSkxHVkJRV1VzUlVGQlJUdG5Ra0ZEYmtJc1dVRkJXU3hIUVVGSExGRkJRVkVzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXp0aFFVTXhRenRwUWtGQlRUdG5Ra0ZEVEN4dFEwRkJiVU03WjBKQlEyNURMRTFCUVUwc1VVRkJVU3hIUVVGcFFpeHZRa0ZCYjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdaMEpCUTJwRkxFMUJRVTBzUzBGQlN5eEhRVUZITEZGQlFWRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTXNRMEZCUXp0blFrRkRha1FzV1VGQldTeEhRVUZITEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXp0aFFVTXZRenRaUVVORUxFOUJRVThzV1VGQldTeERRVUZETzFOQlEzSkNPMkZCUVUwN1dVRkRUQ3hSUVVGUkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVTdaMEpCUTNaQ08yOUNRVU5GTEU5QlFVOHNSVUZCUlN4RFFVRkRPMmRDUVVOYUxEaENRVUZyUWp0blFrRkRiRUk3YjBKQlEwVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1owSkJRMWdzUzBGQlN5eEpRVUZKTzI5Q1FVTlFMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zTWtKQlFUSkNMRU5CUVVNc1EwRkJRenR2UWtGRE1VTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1owSkJRMWc3YjBKQlEwVXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXgzUWtGQmQwSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1NVRkJTU3hEUVVGRExFTkJRVU03WVVGRE5VUTdVMEZEUmp0SlFVTklMRU5CUVVNN1NVRkZUU3h6UWtGQmMwSTdVVUZETTBJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTdzRRa0ZCYVVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTd3dRa0ZCWlR0WlFVTm9SU3hQUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4MVJFRkJNRUlzU1VGQlNTeE5RVUZOTEVOQlFVTTdPMWxCUlRsRUxFOUJRVThzUzBGQlN5eERRVUZETzBsQlEycENMRU5CUVVNN1NVRkZUU3hQUVVGUExFdEJRV01zVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4cFEwRkJiVUlzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGTDBRc1YwRkJWeXhMUVVGakxFOUJRVThzU1VGQlNTeERRVUZETEZGQlFWRXNlVU5CUVhWQ0xFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJYWkZMRTFCUVUwc1MwRkJZeXhQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEN0Q1FVRnJRaXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVUzUkN4TFFVRkxMRXRCUVdNc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTdzJRa0ZCYVVJc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRk0wUXNTMEZCU3l4TFFVRmpMRTlCUVU4c1NVRkJTU3hEUVVGRExGRkJRVkVzTmtKQlFXbENMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSVE5FTEZOQlFWTXNTMEZCWXl4UFFVRlBMRWxCUVVrc1EwRkJReXhSUVVGUkxESkNRVUZuUWl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVVNVJDeExRVUZMTEV0QlFXTXNUMEZCVHl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVVZ5Unl3MFJFRkJORVE3U1VGRE5VUTdPMDlCUlVjN1NVRkRUeXhYUVVGWE8xRkJRMjVDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eFZRVUZWTERoQ1FVRm5RanRaUVVOeVJDeHZRMEZCYzBJN1lVRkRia0lzU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hEUVVGRExGVkJRVlVzYzBOQlFXOUNPMWxCUXpsRUxEUkRRVUV3UWp0aFFVTjJRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNc1ZVRkJWU3cwUWtGQlpUdFpRVU42UkN4clEwRkJjVUk3TzFsQlJYSkNMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zVjBGQlZ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc09FSkJRVGhDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRemRHTEVOQlFVTTdTVUZGUkRzN096czdPMDlCVFVjN1NVRkRUeXhaUVVGWkxFTkJRVU1zWTBGQmQwSTdVVUZETjBNc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTjRRaXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUTNaQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEdOQlFXTXNRMEZCUXl4WFFVRlhMRVZCUVVVc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNN1VVRkRha1VzVFVGQlRTeFZRVUZWTEVkQlFVY3NSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUXpkRUxFMUJRVTBzVTBGQlV5eEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUlVGQlJTeFZRVUZWTEVWQlFVVXNTVUZCU1N4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRjRVlzVTBGQlV5eERRVUZETEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExHRkJRV0VzUTBGQlF6dFJRVU0zUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVRkZMR05CUVdNc1EwRkJReXhEUVVGRE8xRkJRMmhFTEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eGhRVUZoTEVWQlFVVXNaVUZCWlN4RFFVRkRMRU5CUVVNN1VVRkZla1FzVFVGQlRTeFZRVUZWTEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc09FSkJRV01zUTBGQlF6dFJRVU0xUXl4SlFVRkpMRlZCUVZVN1dVRkRXaXhUUVVGVExFTkJRVU1zVFVGQlRTd3JRa0ZCWlN4VlFVRlZMRU5CUVVNc1EwRkJRenRSUVVVM1F5eE5RVUZOTEZkQlFWY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1RVRkJUU3huUTBGQlpTeERRVUZETzFGQlF6bERMRWxCUVVrc1YwRkJWenRaUVVOaUxGTkJRVk1zUTBGQlF5eE5RVUZOTEdsRFFVRm5RaXhYUVVGWExFTkJRVU1zUTBGQlF6dFJRVVV2UXl4SlFVRkpMR1ZCUVdVc1IwRkJWeXhIUVVGSExFTkJRVU1zVFVGQlRTeDVRMEZCYlVJc1EwRkJRenRSUVVNMVJDeEpRVUZKTEdWQlFXVTdXVUZEYWtJc1UwRkJVeXhEUVVGRExFMUJRVTBzTUVOQlFXOUNMR1ZCUVdVc1EwRkJReXhEUVVGRE8xRkJSWFpFTEUxQlFVMHNjMEpCUVhOQ0xFZEJRVmNzUjBGQlJ5eERRVUZETEUxQlFVMHNkVVJCUVRCQ0xFTkJRVU03VVVGRE5VVXNTVUZCU1N4elFrRkJjMElzUzBGQlN5eFRRVUZUTzFsQlEzUkRMRk5CUVZNc1EwRkJReXhOUVVGTkxIZEVRVUV5UWl4elFrRkJjMElzUTBGQlF5eERRVUZETzFGQlJYSkZMRWxCUVVrc1kwRkJZeXc0UWtGQmFVSXNSVUZCUlR0WlFVTnVReXhsUVVGbExFZEJRVWNzU1VGQlNTeERRVUZETEdWQlFXVXNSVUZCUlN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8xbEJRM0JFTEZOQlFWTXNRMEZCUXl4TlFVRk5MREJEUVVGdlFpeGxRVUZsTEVOQlFVTXNRMEZCUXp0VFFVTjBSRHRSUVVWRUxFOUJRVThzVTBGQlV5eERRVUZETzBsQlEyNUNMRU5CUVVNN1NVRkZSRHM3T3pzN08wOUJUVWM3U1VGRFNTeE5RVUZOTEVOQlFVTXNXVUZCV1N4RFFVRkRMRmRCUVhOQ08xRkJReTlETEUxQlFVMHNSMEZCUnl4SFFVRnBRaXhKUVVGSkxGbEJRVmtzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTjRSQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eEhRVUZITEVOQlFVTXNVVUZCVVN4RFFVRkRPMUZCUTNCRExFOUJRVThzUjBGQlJ5eERRVUZETEZsQlFWa3NRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJRenRKUVVNeFF5eERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU1N4TlFVRk5MRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNTMEZCWVR0UlFVTTFReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRPMUZCUXpWQ0xFMUJRVTBzVVVGQlVTeEhRVUZITEdkSFFVRnRSQ3hEUVVGRE8xRkJRM0pGTEUxQlFVMHNVMEZCVXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVVjJReXhOUVVGTkxHVkJRV1VzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEYUVZc1QwRkJUeXhsUVVGbExFTkJRVU03U1VGRGVrSXNRMEZCUXp0SlFVVkVPenM3T3pzN096dFBRVkZITzBsQlEwa3NUVUZCVFN4RFFVRkRMSE5DUVVGelFpeERRVU5zUXl4SFFVRlhMRVZCUTFnc1NVRkJXU3hGUVVOYUxFdEJRV0U3VVVGRllpdzBSVUZCTkVVN1VVRkROVVVzTWtKQlFUSkNPMUZCUXpOQ0xDdERRVUVyUXp0UlFVTXZReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEd0Q1FVRnJRaXhEUVVGRExFdEJRVXNzUTBGQlF6dFpRVU42UXl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExIVkRRVUYxUXl4RFFVRkRMRU5CUVVNN1VVRkRNMFFzVFVGQlRTeFRRVUZUTEVkQlFVY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNNVJTeFRRVUZUTEVOQlFVTXNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeERRVUZETzFGQlF6ZERMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRGRrTXNUMEZCVHl4VFFVRlRMRU5CUVVNN1NVRkRia0lzUTBGQlF6dEpRVVZFTEZsQlFXMUNMRWRCUVdNN1VVRkRMMElzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4SFFVRkhMRU5CUVVNN1VVRkRia0lzVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVNdlF5eEpRVUZKTEV0QlFVc3NTMEZCU3l4SlFVRkpPMWxCUTJoQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRPenRaUVVWd1FpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRzFEUVVGdFF5eERRVUZETEVOQlFVTTdVVUZEZGtRc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNN1VVRkRjRU1zU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGbEJRVmtzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU55Uml4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4WlFVRlpMRU5CUVVNc2MwSkJRWE5DTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRekZFTEZsQlFWa3NRMEZCUXl4elFrRkJjMElzUTBGQlF5eFRRVUZUTEVOQlFVTTdVVUZGYkVRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc09FSkJRV01zUlVGQlJUdFpRVU4yUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZPMmRDUVVOMFF5eE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMR1ZCUVdVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEd0Q1FVRnJRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEpRVUZKTzI5Q1FVTm9SaXhSUVVGUkxEUkNRVUZaTEdsQ1FVRnBRaXhEUVVGRExFTkJRVU03VTBGRE5VTTdVVUZGUkN4clJFRkJhMFE3VVVGRGJFUXNkVUpCUVhWQ08xRkJRM1pDTERKR1FVRXlSanRSUVVNelJpeHhSRUZCY1VRN1VVRkRja1FzTmtOQlFUWkRPMUZCUXpkRExESkdRVUV5Ump0UlFVTXpSaXh4UkVGQmNVUTdVVUZEY2tRc1NVRkJTVHRSUVVWS0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExIVkVRVUV3UWl4RlFVRkZPMWxCUTI1RUxFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlR0blFrRkRaaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEdWQlFXVXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxHdENRVUZyUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hKUVVGSk8yOUNRVU5vUml4UlFVRlJMSEZFUVVGM1FpeHBRa0ZCYVVJc1EwRkJReXhEUVVGRE8ybENRVU5zUkN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN1owSkJRM0pETEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc1pVRkJaU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NhMEpCUVd0Q0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVsQlFVazdiMEpCUTJoR0xGRkJRVkVzY1VSQlFYZENMR2xDUVVGcFFpeERRVUZETEVOQlFVTTdVMEZEZUVRN1NVRkRTQ3hEUVVGRE96dEJRV2hSZVVJc2JVTkJRWE5DTEVkQlFVYzdTVUZEYWtRc1NVRkJTU3hGUVVGRkxFZEJRVWM3U1VGRFZDeFRRVUZUTEVWQlFVVXNSVUZCUlR0SlFVTmlMRXRCUVVzc1JVRkJSU3hIUVVGSE8wTkJRMWdzUTBGQlF6dEJRVVZ4UWl4cFEwRkJiMElzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCVXp0SlFVTTFSQ3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSE8wbEJRMmhFTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVYzdRMEZEYWtRc1EwRkJReXhEUVVGRE8wRkJRMjlDTERaQ1FVRm5RaXhIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjZSQ3cyUWtGQlowSXNSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJVeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5QkVSeUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2Wkdjbk8xeHVYRzVwYlhCdmNuUWdlMXh1SUNCQlRGQklRVUpGVkN4Y2JpQWdaR1YwWldOMFFXeHdhR0ZpWlhRc1hHNGdJR2RsZEZOd2JHbDBkR1Z5Um05eVEyOXNkVzF1TEZ4dUlDQm5aWFJUZEdGMGN5eGNiaUFnVGs5VVFWUkpUMDRzWEc0Z0lGTmxjVU52YkZOMFlYUnpMRnh1SUNCemNHeHBkSFJsY2tGelJtRnpkR0VzWEc0Z0lGTndiR2wwZEdWeVJuVnVZeXhjYmlBZ1ZFRkhVMXh1ZlNCbWNtOXRJQ2N1TDIxaFkzSnZiVzlzWldOMWJHVW5PMXh1WEc0dktpb2dRMnhoYzNNZ1ptOXlJR2hoYm1Sc2FXNW5JRzV2ZEdGMGFXOXVJSFZ1YVhSeklHbHVJRTFoWTNKdmJXOXNaV04xYkdVZ1kyOXNkVzF1Y3lBcUwxeHVaWGh3YjNKMElHTnNZWE56SUZWdWFYUnpTR0Z1Wkd4bGNpQjdYRzRnSUhCeWIzUmxZM1JsWkNCeVpXRmtiMjVzZVNCZlkyOXNkVzF1T2lCRVJ5NURiMngxYlc0N0lDOHZJSFJvWlNCamIyeDFiVzRnZEc4Z1ltVWdZMjl1ZG1WeWRHVmtYRzRnSUhCeWIzUmxZM1JsWkNCZmRXNXBkSE02SUhOMGNtbHVaenNnTHk4Z2RXNXBkSE1zSUc5bUlIUm9aU0JtYjNKdElHWmhjM1JoTENCelpYQmhjbUYwYjNKY2JpQWdjSEp2ZEdWamRHVmtJRjl1YjNSaGRHbHZiam9nVGs5VVFWUkpUMDQ3SUM4dklHTjFjbkpsYm5RZ2JtOTBZWFJwYjI0Z0tIZHBkR2h2ZFhRZ09sTkZVVHBPVkN3Z1pYUmpMaWxjYmlBZ2NISnZkR1ZqZEdWa0lGOWtaV1poZFd4MFIyRndVM2x0WW05c09pQnpkSEpwYm1jN1hHNGdJSEJ5YjNSbFkzUmxaQ0J6ZEdGMGFXTWdjbVZoWkc5dWJIa2dYMlJsWm1GMWJIUkhZWEJUZVcxaWIyeHpSR2xqZENBOUlIdGNiaUFnSUNCSVJVeE5PaUFuS2ljc1hHNGdJQ0FnVTBWUVFWSkJWRTlTT2lBbkp5eGNiaUFnSUNCR1FWTlVRVG9nSnkwbkxGeHVJQ0I5TzF4dVhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ2NtVmhaRzl1YkhrZ1VHVndkR2xrWlVaaGMzUmhRV3h3YUdGaVpYUWdQU0J1WlhjZ1UyVjBQSE4wY21sdVp6NG9XMXh1SUNBZ0lDZEhKeXdnSjB3bkxDQW5XU2NzSUNkVEp5d2dKMFVuTENBblVTY3NJQ2RFSnl3Z0owNG5MQ0FuUmljc0lDZEJKeXhjYmlBZ0lDQW5TeWNzSUNkU0p5d2dKMGduTENBblF5Y3NJQ2RXSnl3Z0oxQW5MQ0FuVnljc0lDZEpKeXdnSjAwbkxDQW5WQ2NzWEc0Z0lGMHBPMXh1SUNCd2RXSnNhV01nYzNSaGRHbGpJSEpsWVdSdmJteDVJRVJ1WVVaaGMzUmhRV3h3YUdGaVpYUWdQU0J1WlhjZ1UyVjBQSE4wY21sdVp6NG9XeWRCSnl3Z0owTW5MQ0FuUnljc0lDZFVKMTBwTzF4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUhKbFlXUnZibXg1SUZKdVlVWmhjM1JoUVd4d2FHRmlaWFFnUFNCdVpYY2dVMlYwUEhOMGNtbHVaejRvV3lkQkp5d2dKME1uTENBblJ5Y3NJQ2RWSjEwcE8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdjMlYwVlc1cGRITlViMFpoYzNSaFEyOXNkVzF1S0dOdmJEb2dSRWN1UTI5c2RXMXVLU0I3WEc0Z0lDQWdhV1lnS0dOdmJDNXpaVzFVZVhCbElDRTlQU0JFUnk1VFJVMVVXVkJGTGsxQlExSlBUVTlNUlVOVlRFVXBYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0owWmhjM1JoSUdOdmJIVnRiaUJ0ZFhOMElHSmxJRTFCUTFKUFRVOU1SVU5WVEVVbktUdGNibHh1SUNBZ0lHTnZibk4wSUhOMFlYUnpPaUJUWlhGRGIyeFRkR0YwY3lBOUlHZGxkRk4wWVhSektHTnZiQ3dnTlN3Z2MzQnNhWFIwWlhKQmMwWmhjM1JoS1R0Y2JpQWdJQ0JqYjI1emRDQmhiR2xuYm1Wa0lEMGdjM1JoZEhNdWMyRnRaVXhsYm1kMGFDQS9JQ2RUUlZFdVRWTkJKeUE2SUNkVFJWRW5PMXh1SUNBZ0lHTnZibk4wSUdGc2NHaGhZbVYwSUQwZ1pHVjBaV04wUVd4d2FHRmlaWFFvYzNSaGRITXBPMXh1WEc0Z0lDQWdZMjlzTG5ObGRGUmhaeWhFUnk1VVFVZFRMbFZPU1ZSVExDQk9UMVJCVkVsUFRpNUdRVk5VUVNrN1hHNGdJQ0FnWTI5c0xuTmxkRlJoWnloVVFVZFRMbUZzYVdkdVpXUXNJR0ZzYVdkdVpXUXBPMXh1SUNBZ0lHTnZiQzV6WlhSVVlXY29WRUZIVXk1aGJIQm9ZV0psZEN3Z1lXeHdhR0ZpWlhRcE8xeHVJQ0I5WEc1Y2JpQWdjSEp2ZEdWamRHVmtJR2RsZENCMWJtbDBjeWdwT2lCemRISnBibWNnZXlCeVpYUjFjbTRnZEdocGN5NWZkVzVwZEhNN0lIMWNibHh1SUNCd2NtOTBaV04wWldRZ1oyVjBJR052YkhWdGJpZ3BPaUJFUnk1RGIyeDFiVzRnZXlCeVpYUjFjbTRnZEdocGN5NWZZMjlzZFcxdU95QjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRDQnViM1JoZEdsdmJpZ3BPaUJPVDFSQlZFbFBUaUI3SUhKbGRIVnliaUIwYUdsekxsOXViM1JoZEdsdmJqc2dmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUWdaR1ZtWVhWc2RFZGhjRk41YldKdmJDZ3BPaUJ6ZEhKcGJtY2dleUJ5WlhSMWNtNGdkR2hwY3k1ZlpHVm1ZWFZzZEVkaGNGTjViV0p2YkRzZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhRZ2MyVndZWEpoZEc5eUtDazZJSE4wY21sdVp5QjhJSFZ1WkdWbWFXNWxaQ0I3WEc0Z0lDQWdZMjl1YzNRZ2MyVndZWEpoZEc5eU9pQnpkSEpwYm1jZ2ZDQjFibVJsWm1sdVpXUWdQU0IwYUdsekxtTnZiSFZ0Ymk1blpYUlVZV2NvVkVGSFV5NXpaWEJoY21GMGIzSXBJRDgvSUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0JwWmlBb2RHaHBjeTV1YjNSaGRHbHZiaUE5UFQwZ1RrOVVRVlJKVDA0dVUwVlFRVkpCVkU5U0lDWW1JSE5sY0dGeVlYUnZjaUE5UFQwZ2RXNWtaV1pwYm1Wa0tWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dCVFpYQmhjbUYwYjNJZ2FYTWdiV0Z1WkdGMGIzSjVJQ0JtYjNJZ1kyOXNkVzF1SUNja2UzUm9hWE11WTI5c2RXMXVMbTVoYldWOUp5QnZaaUJ1YjNSaGRHbHZiaUFuSkh0MGFHbHpMbTV2ZEdGMGFXOXVmU2N1WUNrN1hHNGdJQ0FnY21WMGRYSnVJSE5sY0dGeVlYUnZjanRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhRZ1lXeHBaMjVsWkNncE9pQnpkSEpwYm1jZ2UxeHVJQ0FnSUdOdmJuTjBJR0ZzYVdkdVpXUWdQU0IwYUdsekxtTnZiSFZ0Ymk1blpYUlVZV2NvVkVGSFV5NWhiR2xuYm1Wa0tUdGNibHh1SUNBZ0lDOHZJRlJCUjFNdVlXeHBaMjVsWkNCcGN5QnRZVzVrWVhSdmNua2dabTl5SUdOdmJIVnRibk1nYjJZZ1RrOVVRVlJKVDA0dVJrRlRWRUVnWVc1a0lFNVBWRUZVU1U5T0xsTkZVRUZTUVZSUFVseHVJQ0FnSUdsbUlDZ2hZV3hwWjI1bFpDQW1KaUFvZEdocGN5NXBjMFpoYzNSaEtDa2dmSHdnZEdocGN5NXBjMU5sY0dGeVlYUnZjaWdwS1NsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVkdGbklHRnNhV2R1WldRZ2JtOTBJSE5sZENjcE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUdGc2FXZHVaV1E3WEc0Z0lIMWNibHh1SUNBdktpb2dRV3h3YUdGaVpYUWdibUZ0WlNBb2RYQndaWElnWTJGelpTa2dLaTljYmlBZ2NIVmliR2xqSUdkbGRDQmhiSEJvWVdKbGRDZ3BPaUJ6ZEhKcGJtY2dlMXh1SUNBZ0lHTnZibk4wSUdGc2NHaGhZbVYwSUQwZ2RHaHBjeTVqYjJ4MWJXNHVaMlYwVkdGbktGUkJSMU11WVd4d2FHRmlaWFFwTzF4dVhHNGdJQ0FnTHk4Z1ZFRkhVeTVoYkhCb1lXSmxkQ0JwY3lCdFlXNWtZWFJ2Y25rZ1ptOXlJR052YkhWdGJuTWdiMllnVGs5VVFWUkpUMDR1UmtGVFZFRWdZVzVrSUU1UFZFRlVTVTlPTGxORlVFRlNRVlJQVWx4dUlDQWdJR2xtSUNnaFlXeHdhR0ZpWlhRZ0ppWWdLSFJvYVhNdWFYTkdZWE4wWVNncElIeDhJSFJvYVhNdWFYTlRaWEJoY21GMGIzSW9LU2twWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMVJoWnlCaGJIQm9ZV0psZENCdWIzUWdjMlYwSnlrN1hHNWNiaUFnSUNCeVpYUjFjbTRnWVd4d2FHRmlaWFE3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMFFXeHdhR0ZpWlhSVGFYcGxLQ2s2SUc1MWJXSmxjaUI3WEc0Z0lDQWdhV1lnS0hSb2FYTXVibTkwWVhScGIyNGdQVDBnVGs5VVFWUkpUMDR1U0VWTVRTQjhmQ0IwYUdsekxtRnNjR2hoWW1WMElEMDlJRUZNVUVoQlFrVlVMbFZPS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JoYkhCb1lXSmxkRk5wZW1WVGRISWdQU0IwYUdsekxtTnZiSFZ0Ymk1blpYUlVZV2NvVkVGSFV5NWhiSEJvWVdKbGRGTnBlbVVwTzF4dUlDQWdJQ0FnYkdWMElHRnNjR2hoWW1WMFUybDZaVG9nYm5WdFltVnlPMXh1SUNBZ0lDQWdhV1lnS0dGc2NHaGhZbVYwVTJsNlpWTjBjaWtnZTF4dUlDQWdJQ0FnSUNCaGJIQm9ZV0psZEZOcGVtVWdQU0J3WVhKelpVbHVkQ2hoYkhCb1lXSmxkRk5wZW1WVGRISXBPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdMeThnWTJGc1kzVnNZWFJsSUdGc2NHaGhZbVYwVTJsNlpTQnZiaUJrWlcxaGJtUmNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2MzQnNhWFIwWlhJNklGTndiR2wwZEdWeVJuVnVZeUE5SUdkbGRGTndiR2wwZEdWeVJtOXlRMjlzZFcxdUtIUm9hWE11WTI5c2RXMXVLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjM1JoZEhNZ1BTQm5aWFJUZEdGMGN5aDBhR2x6TG1OdmJIVnRiaXdnTVN3Z2MzQnNhWFIwWlhJcE8xeHVJQ0FnSUNBZ0lDQmhiSEJvWVdKbGRGTnBlbVVnUFNCUFltcGxZM1F1YTJWNWN5aHpkR0YwY3k1bWNtVnhLUzVzWlc1bmRHZzdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnlaWFIxY200Z1lXeHdhR0ZpWlhSVGFYcGxPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCemQybDBZMmdnS0hSb2FYTXVZV3h3YUdGaVpYUXBJSHRjYmlBZ0lDQWdJR05oYzJVZ1FVeFFTRUZDUlZRdVVGUTZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQXlNRHRjYmlBZ0lDQWdJR05oYzJVZ1FVeFFTRUZDUlZRdVJFNUJPbHh1SUNBZ0lDQWdZMkZ6WlNCQlRGQklRVUpGVkM1U1RrRTZYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQTBPMXh1SUNBZ0lDQWdZMkZ6WlNBblRsUW5PbHh1SUNBZ0lDQWdJQ0JqYjI1emIyeGxMbmRoY200b1lGVnVaWGh3WldOMFpXUWdZV3h3YUdGaVpYUWdKMDVVSnk1Z0tUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlEUTdYRzRnSUNBZ0lDQmtaV1poZFd4ME9seHVJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lGVnVaWGh3WldOMFpXUWdZV3h3YUdGaVpYUWdKeVI3ZEdocGN5NWhiSEJvWVdKbGRIMG5MbUFwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhSQmJIQm9ZV0psZEVselRYVnNkR2xqYUdGeUtDazZJR0p2YjJ4bFlXNGdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtNXZkR0YwYVc5dUlEMDlJRTVQVkVGVVNVOU9Ma2hGVEUwZ2ZId2dkR2hwY3k1aGJIQm9ZV0psZENBOVBTQkJURkJJUVVKRlZDNVZUaWxjYmlBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TG1OdmJIVnRiaTVuWlhSVVlXY29WRUZIVXk1aGJIQm9ZV0psZEVselRYVnNkR2xqYUdGeUtTQTlQU0FuZEhKMVpTYzdYRzRnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdselJtRnpkR0VvS1RvZ1ltOXZiR1ZoYmlCN0lISmxkSFZ5YmlCMGFHbHpMbTV2ZEdGMGFXOXVJRDA5UFNCT1QxUkJWRWxQVGk1R1FWTlVRVHNnZlZ4dVhHNGdJSEIxWW14cFl5QnBjMU5sY0dGeVlYUnZjaWdwT2lCaWIyOXNaV0Z1SUhzZ2NtVjBkWEp1SUhSb2FYTXVibTkwWVhScGIyNGdQVDA5SUU1UFZFRlVTVTlPTGxORlVFRlNRVlJQVWpzZ2ZWeHVYRzRnSUhCMVlteHBZeUJwYzBobGJHMG9LVG9nWW05dmJHVmhiaUI3SUhKbGRIVnliaUIwYUdsekxtNXZkR0YwYVc5dUlEMDlQU0JPVDFSQlZFbFBUaTVJUlV4Tk95QjlYRzVjYmlBZ2NIVmliR2xqSUdselVtNWhLQ2s2SUdKdmIyeGxZVzRnZXlCeVpYUjFjbTRnZEdocGN5NWhiSEJvWVdKbGRDQTlQVDBnUVV4UVNFRkNSVlF1VWs1Qk95QjlYRzVjYmlBZ2NIVmliR2xqSUdselJHNWhLQ2s2SUdKdmIyeGxZVzRnZXlCeVpYUjFjbTRnZEdocGN5NWhiSEJvWVdKbGRDQTlQVDBnUVV4UVNFRkNSVlF1UkU1Qk95QjlYRzVjYmlBZ2NIVmliR2xqSUdselVHVndkR2xrWlNncE9pQmliMjlzWldGdUlIc2djbVYwZFhKdUlIUm9hWE11WVd4d2FHRmlaWFFnUFQwOUlFRk1VRWhCUWtWVUxsQlVPeUI5WEc1Y2JpQWdjSFZpYkdsaklHbHpUWE5oS0NrNklHSnZiMnhsWVc0Z2V5QnlaWFIxY200Z2RHaHBjeTVoYkdsbmJtVmtJRDhnZEdocGN5NWhiR2xuYm1Wa0xuUnZWWEJ3WlhKRFlYTmxLQ2t1YVc1amJIVmtaWE1vSjAxVFFTY3BJRG9nWm1Gc2MyVTdJSDFjYmx4dUlDQXZLaW9nUVhOemIyTnBZWFJsSUc1dmRHRjBhVzl1SUhSNWNHVnpJSGRwZEdnZ2RHaGxJR052Y25KbGMzQnZibVJwYm1jZ2RXNXBkSE1nS2k5Y2JpQWdMeW9xWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMDVQVkVGVVNVOU9mU0FnSUNBZ1RtOTBZWFJwYjI0Z1lYTnpiMk5wWVhSbFpDQjNhWFJvSUhSb1pTQjFibWwwY3lCMGVYQmxYRzRnSUNBcUwxeHVJQ0J3Y205MFpXTjBaV1FnWjJWMFRtOTBZWFJwYjI0b0tUb2dUazlVUVZSSlQwNGdlMXh1SUNBZ0lHbG1JQ2gwYUdsekxuVnVhWFJ6TG5SdlRHOTNaWEpEWVhObEtDa3VjM1JoY25SelYybDBhQ2hPVDFSQlZFbFBUaTVHUVZOVVFTa3BYRzRnSUNBZ0lDQnlaWFIxY200Z1RrOVVRVlJKVDA0dVJrRlRWRUU3WEc0Z0lDQWdaV3h6WlNCcFppQW9kR2hwY3k1MWJtbDBjeTUwYjB4dmQyVnlRMkZ6WlNncExuTjBZWEowYzFkcGRHZ29UazlVUVZSSlQwNHVVMFZRUVZKQlZFOVNLU2xjYmlBZ0lDQWdJSEpsZEhWeWJpQk9UMVJCVkVsUFRpNVRSVkJCVWtGVVQxSTdYRzRnSUNBZ1pXeHpaU0JwWmlBb2RHaHBjeTUxYm1sMGN5NTBiMHh2ZDJWeVEyRnpaU2dwTG5OMFlYSjBjMWRwZEdnb1RrOVVRVlJKVDA0dVNFVk1UU2twWEc0Z0lDQWdJQ0J5WlhSMWNtNGdUazlVUVZSSlQwNHVTRVZNVFR0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUVOdmJIVnRiaUFuSkh0MGFHbHpMbU52YkhWdGJpNXVZVzFsZlNjZ2FHRnpJSFZ1Wlhod1pXTjBaV1FnYm05MFlYUnBiMjRnSnlSN2RHaHBjeTUxYm1sMGMzMG5MbUFwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlNCaElHNWxkeUJsYlhCMGVTQmpiMngxYlc0Z2IyWWdkR2hsSUhOd1pXTnBabWxsWkNCdWIzUmhkR2x2YmlCMGVYQmxJR0Z1WkNCMGFHVWdjMkZ0WlZ4dUlDQWdLaUJzWlc1bmRHZ2dZWE1nWTI5c2RXMXVYRzRnSUNBcVhHNGdJQ0FxSUVCd1lYSmhiU0I3VGs5VVFWUkpUMDU5SUhSaGNtZGxkRTV2ZEdGMGFXOXVYRzRnSUNBcUlFQnlaWFIxY200Z2UwUkhMa052YkhWdGJuMWNiaUFnSUNvdlhHNGdJSEJ5YjNSbFkzUmxaQ0JuWlhST1pYZERiMngxYlc0b2RHRnlaMlYwVG05MFlYUnBiMjQ2SUU1UFZFRlVTVTlPS1RvZ1JFY3VRMjlzZFcxdUlIdGNiaUFnSUNCamIyNXpkQ0JqYjJ3Z1BTQjBhR2x6TG1OdmJIVnRianRjYmlBZ0lDQmpiMjV6ZENCc1pXNGdQU0JqYjJ3dWJHVnVaM1JvTzF4dUlDQWdJR052Ym5OMElHNWhiV1VnUFNCMFlYSm5aWFJPYjNSaGRHbHZiaTUwYjB4dmQyVnlRMkZ6WlNncElDc2dKeWduSUNzZ1kyOXNMbTVoYldVZ0t5QW5LU2M3WEc0Z0lDQWdZMjl1YzNRZ2JtVjNRMjlzVG1GdFpTQTlJR052YkM1a1lYUmhSbkpoYldVdVkyOXNkVzF1Y3k1blpYUlZiblZ6WldST1lXMWxLRzVoYldVcE8xeHVJQ0FnSUdOdmJuTjBJRzVsZDBOdmJIVnRiaUE5SUVSSExrTnZiSFZ0Ymk1bWNtOXRUR2x6ZENnbmMzUnlhVzVuSnl3Z2JtVjNRMjlzVG1GdFpTd2dibVYzSUVGeWNtRjVLR3hsYmlrdVptbHNiQ2duSnlrcE8xeHVJQ0FnSUc1bGQwTnZiSFZ0Ymk1elpXMVVlWEJsSUQwZ1JFY3VVMFZOVkZsUVJTNU5RVU5TVDAxUFRFVkRWVXhGTzF4dUlDQWdJRzVsZDBOdmJIVnRiaTV6WlhSVVlXY29SRWN1VkVGSFV5NVZUa2xVVXl3Z2RHRnlaMlYwVG05MFlYUnBiMjRwTzF4dUlDQWdJRzVsZDBOdmJIVnRiaTV6WlhSVVlXY29SRWN1VkVGSFV5NURSVXhNWDFKRlRrUkZVa1ZTTENBblRXRmpjbTl0YjJ4bFkzVnNaU2NwTzF4dVhHNGdJQ0FnWTI5dWMzUWdjM0pqUVd4cFoyNWxaQ0E5SUdOdmJDNW5aWFJVWVdjb1ZFRkhVeTVoYkdsbmJtVmtLVHRjYmlBZ0lDQnBaaUFvYzNKalFXeHBaMjVsWkNsY2JpQWdJQ0FnSUc1bGQwTnZiSFZ0Ymk1elpYUlVZV2NvVkVGSFV5NWhiR2xuYm1Wa0xDQnpjbU5CYkdsbmJtVmtLVHRjYmx4dUlDQWdJR052Ym5OMElITnlZMEZzY0doaFltVjBJRDBnWTI5c0xtZGxkRlJoWnloVVFVZFRMbUZzY0doaFltVjBLVHRjYmlBZ0lDQnBaaUFvYzNKalFXeHdhR0ZpWlhRcFhHNGdJQ0FnSUNCdVpYZERiMngxYlc0dWMyVjBWR0ZuS0ZSQlIxTXVZV3h3YUdGaVpYUXNJSE55WTBGc2NHaGhZbVYwS1R0Y2JseHVJQ0FnSUd4bGRDQnpjbU5CYkhCb1lXSmxkRk5wZW1VNklITjBjbWx1WnlBOUlHTnZiQzVuWlhSVVlXY29WRUZIVXk1aGJIQm9ZV0psZEZOcGVtVXBPMXh1SUNBZ0lHbG1JQ2h6Y21OQmJIQm9ZV0psZEZOcGVtVXBYRzRnSUNBZ0lDQnVaWGREYjJ4MWJXNHVjMlYwVkdGbktGUkJSMU11WVd4d2FHRmlaWFJUYVhwbExDQnpjbU5CYkhCb1lXSmxkRk5wZW1VcE8xeHVYRzRnSUNBZ1kyOXVjM1FnYzNKalFXeHdhR0ZpWlhSSmMwMTFiSFJwWTJoaGNqb2djM1J5YVc1bklEMGdZMjlzTG1kbGRGUmhaeWhVUVVkVExtRnNjR2hoWW1WMFNYTk5kV3gwYVdOb1lYSXBPMXh1SUNBZ0lHbG1JQ2h6Y21OQmJIQm9ZV0psZEVselRYVnNkR2xqYUdGeUlDRTlQU0IxYm1SbFptbHVaV1FwWEc0Z0lDQWdJQ0J1WlhkRGIyeDFiVzR1YzJWMFZHRm5LRlJCUjFNdVlXeHdhR0ZpWlhSSmMwMTFiSFJwWTJoaGNpd2djM0pqUVd4d2FHRmlaWFJKYzAxMWJIUnBZMmhoY2lrN1hHNWNiaUFnSUNCcFppQW9kR0Z5WjJWMFRtOTBZWFJwYjI0Z1BUMGdUazlVUVZSSlQwNHVTRVZNVFNrZ2UxeHVJQ0FnSUNBZ2MzSmpRV3h3YUdGaVpYUlRhWHBsSUQwZ2RHaHBjeTVuWlhSQmJIQm9ZV0psZEZOcGVtVW9LUzUwYjFOMGNtbHVaeWdwTzF4dUlDQWdJQ0FnYm1WM1EyOXNkVzF1TG5ObGRGUmhaeWhVUVVkVExtRnNjR2hoWW1WMFUybDZaU3dnYzNKalFXeHdhR0ZpWlhSVGFYcGxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2JtVjNRMjlzZFcxdU8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU55WldGMFpTQmhJRzVsZHlCbGJYQjBlU0JqYjJ4MWJXNGdkWE5wYm1jZ2RHVnRjR3hoZEdWRGIyd2dZWE1nWVNCMFpXMXdiR0YwWlZ4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwUkhMa052YkhWdGJuMGdkR1Z0Y0d4aGRHVkRiMndnSUhSb1pTQndjbTl3WlhKMGFXVnpJR0Z1WkNCMWJtbDBjeUJ2WmlCMGFHbHpJR052YkhWdGJpQmhjbVVnZFhObFpDQmhjeUJoWEc0Z0lDQXFJSFJsYlhCc1lYUmxJSFJ2SUdKMWFXeGtJSFJvWlNCdVpYY2diMjVsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlMFJITGtOdmJIVnRibjFjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdaMlYwVG1WM1EyOXNkVzF1S0hSbGJYQnNZWFJsUTI5c09pQkVSeTVEYjJ4MWJXNHBPaUJFUnk1RGIyeDFiVzRnZTF4dUlDQWdJR052Ym5OMElHTnZiRG9nVlc1cGRITklZVzVrYkdWeUlEMGdibVYzSUZWdWFYUnpTR0Z1Wkd4bGNpaDBaVzF3YkdGMFpVTnZiQ2s3WEc0Z0lDQWdZMjl1YzNRZ2RHRnlaMlYwVG05MFlYUnBiMjRnUFNCamIyd3VibTkwWVhScGIyNDdYRzRnSUNBZ2NtVjBkWEp1SUdOdmJDNW5aWFJPWlhkRGIyeDFiVzRvZEdGeVoyVjBUbTkwWVhScGIyNHBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVFZ2FHVnNjR1Z5SUdaMWJtTjBhVzl1SUdOb1pXTnJhVzVuSUhSb1pTQjJZV3hwWkdsMGVTQnZaaUIwYUdVZ0ozVnVhWFJ6SnlCemRISnBibWRjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUhWdWFYUnpJQ0IwYUdVZ2MzUnlhVzVuSUhSdklHSmxJSFpoYkdsa1lYUmxaRnh1SUNBZ0tpQkFjbVYwZFhKdUlIdGliMjlzWldGdWZWeHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklITjBZWFJwWXlCMWJtbDBjMU4wY21sdVowbHpWbUZzYVdRb2RXNXBkSE02SUhOMGNtbHVaeWs2SUdKdmIyeGxZVzRnZTF4dUlDQWdJSFZ1YVhSeklEMGdkVzVwZEhNdWRHOU1iM2RsY2tOaGMyVW9LVHRjYmlBZ0lDQmpiMjV6ZENCd2NtVm1hWGhsY3lBOUlGdE9UMVJCVkVsUFRpNUdRVk5VUVN3Z1RrOVVRVlJKVDA0dVUwVlFRVkpCVkU5U0xDQk9UMVJCVkVsUFRpNUlSVXhOWFR0Y2JpQWdJQ0JqYjI1emRDQndiM04wWm1sNFpYTWdQU0JiSjNKdVlTY3NJQ2RrYm1FbkxDQW5jSFFuWFR0Y2JseHVJQ0FnSUdOdmJuTjBJSEJ5WldacGVFTnlhWFJsY21sdmJpQTlJSEJ5WldacGVHVnpMbk52YldVb0tIQXBJRDArSUhWdWFYUnpMbk4wWVhKMGMxZHBkR2dvY0M1MGIweHZkMlZ5UTJGelpTZ3BLU2s3WEc0Z0lDQWdjbVYwZFhKdUlIQnlaV1pwZUVOeWFYUmxjbWx2Ymp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRiMjV6ZEhKMVkzUWdZU0J1WlhjZ1kyOXNkVzF1SUc5bUlITmxiV0Z1ZEdsaklIUjVjR1VnVFVGRFVrOU5UMHhGUTFWTVJTQm1jbTl0SUhSb1pTQnNhWE4wSUc5bVhHNGdJQ0FxSUhOd1pXTnBabWxsWkNCd1lYSmhiV1YwWlhKelhHNGdJQ0FxWEc0Z0lDQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQWdJQ0JzWlc0Z0lIUm9aU0JzWlc1bmRHZ2diMllnZEdobElHNWxkeUJqYjJ4MWJXNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0emRISnBibWQ5SUNBZ0lHNWhiV1VnSUhSb1pTQnVZVzFsSUc5bUlIUm9aU0J1WlhjZ1kyOXNkVzF1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQWdJQ0IxYm1sMGN5QWdkR2hsSUhWdWFYUnpJRzltSUhSb1pTQnVaWGNnWTI5c2RXMXVYRzRnSUNBcUlFQnlaWFIxY200Z2UwUkhMa052YkhWdGJuMWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QnpkR0YwYVdNZ1oyVjBUbVYzUTI5c2RXMXVSbkp2YlZCaGNtRnRjeWhjYmlBZ0lDQnNaVzQ2SUc1MWJXSmxjaXhjYmlBZ0lDQnVZVzFsT2lCemRISnBibWNzWEc0Z0lDQWdkVzVwZEhNNklITjBjbWx1WjF4dUlDQXBPaUJFUnk1RGIyeDFiVzRnZTF4dUlDQWdJQzh2SUZkQlVrNUpUa2M2SUdsdUlIUm9hWE1nYVcxd2JHVnRaVzUwWVhScGIyNGdhWE1nYVhNZ2FXMXdiM056YVdKc1pTQjBieUIyWlhKcFpua2dkR2hsSUhWdWFYRjFaVzVsYzNOY2JpQWdJQ0F2THlCdlppQjBhR1VnYm1WM0lHTnZiSFZ0YmlkeklHNWhiV1ZjYmlBZ0lDQXZMeUJVVDBSUE9pQjJaWEpwWm5rZ2RHaGxJSFpoYkdsa2FYUjVJRzltSUhWdWFYUnpJSEJoY21GdFpYUmxjbHh1SUNBZ0lHbG1JQ2doVlc1cGRITklZVzVrYkdWeUxuVnVhWFJ6VTNSeWFXNW5TWE5XWVd4cFpDaDFibWwwY3lrcFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjBsdWRtRnNhV1FnWm05eWJXRjBJRzltSUZ4Y0ozVnVhWFJ6WEZ3bklIQmhjbUZ0WlhSbGNpY3BPMXh1SUNBZ0lHTnZibk4wSUc1bGQwTnZiSFZ0YmlBOUlFUkhMa052YkhWdGJpNW1jbTl0VEdsemRDZ25jM1J5YVc1bkp5d2dibUZ0WlN3Z2JtVjNJRUZ5Y21GNUtHeGxiaWt1Wm1sc2JDZ25KeWtwTzF4dUlDQWdJRzVsZDBOdmJIVnRiaTV6WlcxVWVYQmxJRDBnUkVjdVUwVk5WRmxRUlM1TlFVTlNUMDFQVEVWRFZVeEZPMXh1SUNBZ0lHNWxkME52YkhWdGJpNXpaWFJVWVdjb1JFY3VWRUZIVXk1VlRrbFVVeXdnZFc1cGRITXBPMXh1SUNBZ0lISmxkSFZ5YmlCdVpYZERiMngxYlc0N1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9ZMjlzT2lCRVJ5NURiMngxYlc0cElIdGNiaUFnSUNCMGFHbHpMbDlqYjJ4MWJXNGdQU0JqYjJ3N1hHNGdJQ0FnWTI5dWMzUWdkVzVwZEhNZ1BTQjBhR2x6TGw5amIyeDFiVzR1ZEdGbmMxdEVSeTVVUVVkVExsVk9TVlJUWFR0Y2JpQWdJQ0JwWmlBb2RXNXBkSE1nSVQwOUlHNTFiR3dwWEc0Z0lDQWdJQ0IwYUdsekxsOTFibWwwY3lBOUlIVnVhWFJ6TzF4dUlDQWdJR1ZzYzJWY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduVlc1cGRITWdZWEpsSUc1dmRDQnpjR1ZqYVdacFpXUWdhVzRnWTI5c2RXMXVKeWs3WEc0Z0lDQWdkR2hwY3k1ZmJtOTBZWFJwYjI0Z1BTQjBhR2x6TG1kbGRFNXZkR0YwYVc5dUtDazdYRzRnSUNBZ2RHaHBjeTVmWkdWbVlYVnNkRWRoY0ZONWJXSnZiQ0E5SUNoMGFHbHpMbWx6Um1GemRHRW9LU2tnUHlCVmJtbDBjMGhoYm1Sc1pYSXVYMlJsWm1GMWJIUkhZWEJUZVcxaWIyeHpSR2xqZEM1R1FWTlVRU0E2WEc0Z0lDQWdJQ0FvZEdocGN5NXBjMGhsYkcwb0tTa2dQeUJWYm1sMGMwaGhibVJzWlhJdVgyUmxabUYxYkhSSFlYQlRlVzFpYjJ4elJHbGpkQzVJUlV4TklEcGNiaUFnSUNBZ0lDQWdWVzVwZEhOSVlXNWtiR1Z5TGw5a1pXWmhkV3gwUjJGd1UzbHRZbTlzYzBScFkzUXVVMFZRUVZKQlZFOVNPMXh1WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbU52YkhWdGJpNTBZV2R6TG1oaGN5aFVRVWRUTG1Gc2FXZHVaV1FwS1NCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1cGMwWmhjM1JoS0NrZ2ZId2dkR2hwY3k1cGMxTmxjR0Z5WVhSdmNpZ3BLVnh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRVp2Y2lCamIyeDFiVzRnSnlSN2RHaHBjeTVqYjJ4MWJXNHVibUZ0WlgwbklHOW1JRzV2ZEdGMGFXOXVJQ2NrZTNSb2FYTXVibTkwWVhScGIyNTlKeUJnSUN0Y2JpQWdJQ0FnSUNBZ0lDQmdkR0ZuSUNja2UxUkJSMU11WVd4cFoyNWxaSDBuSUdseklHMWhibVJoZEc5eWVTNWdLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJwWmlBb0lYUm9hWE11WTI5c2RXMXVMblJoWjNNdWFHRnpLRlJCUjFNdVlXeHdhR0ZpWlhSVGFYcGxLU2tnZTF4dUlDQWdJQzh2SUNBZ2FXWWdLSFJvYVhNdWFYTklaV3h0S0NrcFhHNGdJQ0FnTHk4Z0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdSbTl5SUdOdmJIVnRiaUFuSkh0MGFHbHpMbU52YkhWdGJpNXVZVzFsZlNjZ2IyWWdibTkwWVhScGIyNGdKeVI3ZEdocGN5NXViM1JoZEdsdmJuMG5JR0FnSzF4dUlDQWdJQzh2SUNBZ0lDQWdJR0IwWVdjZ0p5UjdWRUZIVXk1aGJIQm9ZV0psZEZOcGVtVjlKeUJwY3lCdFlXNWtZWFJ2Y25rdVlDazdYRzRnSUNBZ0x5OGdJQ0JsYkhObElHbG1JQ2hiSjFWT0oxMHVhVzVqYkhWa1pYTW9kR2hwY3k1aGJIQm9ZV0psZENrcFhHNGdJQ0FnTHk4Z0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdSbTl5SUdOdmJIVnRiaUFuSkh0MGFHbHpMbU52YkhWdGJpNXVZVzFsZlNjZ2IyWWdZV3h3YUdGaVpYUWdKeVI3ZEdocGN5NWhiSEJvWVdKbGRIMG5JR0FnSzF4dUlDQWdJQzh2SUNBZ0lDQWdJR0IwWVdjZ0p5UjdWRUZIVXk1aGJIQm9ZV0psZEZOcGVtVjlKeUJwY3lCdFlXNWtZWFJ2Y25rdVlDazdYRzRnSUNBZ0x5OGdmVnh1WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbU52YkhWdGJpNTBZV2R6TG1oaGN5aFVRVWRUTG1Gc2NHaGhZbVYwU1hOTmRXeDBhV05vWVhJcEtTQjdYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NXBjMGhsYkcwb0tTbGNiaUFnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQkdiM0lnWTI5c2RXMXVJQ2NrZTNSb2FYTXVZMjlzZFcxdUxtNWhiV1Y5SnlCdlppQnViM1JoZEdsdmJpQW5KSHQwYUdsekxtNXZkR0YwYVc5dWZTY2dZQ0FyWEc0Z0lDQWdJQ0FnSUNBZ1lIUmhaeUFuSkh0VVFVZFRMbUZzY0doaFltVjBTWE5OZFd4MGFXTm9ZWEo5SnlCcGN5QnRZVzVrWVhSdmNua3VZQ2s3WEc0Z0lDQWdJQ0JsYkhObElHbG1JQ2hiSjFWT0oxMHVhVzVqYkhWa1pYTW9kR2hwY3k1aGJIQm9ZV0psZENrcFhHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1JtOXlJR052YkhWdGJpQW5KSHQwYUdsekxtTnZiSFZ0Ymk1dVlXMWxmU2NnYjJZZ1lXeHdhR0ZpWlhRZ0p5UjdkR2hwY3k1aGJIQm9ZV0psZEgwbklHQWdLMXh1SUNBZ0lDQWdJQ0FnSUdCMFlXY2dKeVI3VkVGSFV5NWhiSEJvWVdKbGRFbHpUWFZzZEdsamFHRnlmU2NnYVhNZ2JXRnVaR0YwYjNKNUxtQXBPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVJbDE5IiwiZXhwb3J0IGZ1bmN0aW9uIGVycm9yVG9Db25zb2xlKGVycikge1xuICAgIHZhciBfYTtcbiAgICBpZiAodHlwZW9mIGVyciA9PT0gJ3N0cmluZycgfHwgZXJyIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBlcnI7XG4gICAgfVxuICAgIGVsc2UgaWYgKCckdGhyb3duSnNFcnJvcicgaW4gZXJyKSB7XG4gICAgICAgIHJldHVybiBlcnJvclRvQ29uc29sZShlcnJbJyR0aHJvd25Kc0Vycm9yJ10pO1xuICAgIH1cbiAgICBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICByZXR1cm4gKF9hID0gZXJyLnN0YWNrKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBlcnIubWVzc2FnZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBlcnIudG9TdHJpbmcoKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gcmVjdFRvQ29uc29sZShyZWN0KSB7XG4gICAgcmV0dXJuIGAoeD0ke3JlY3QueH0sIHk9JHtyZWN0Lnl9LCB3PSR7cmVjdC53aWR0aH0sIGg9JHtyZWN0LmhlaWdodH0pYDtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRHOHRZMjl1YzI5c1pTNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW5SdkxXTnZibk52YkdVdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJTMEVzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4SFFVRlJPenRKUVVOeVF5eEpRVUZKTEU5QlFVOHNSMEZCUnl4TFFVRkxMRkZCUVZFc1NVRkJTU3hIUVVGSExGbEJRVmtzVFVGQlRTeEZRVUZGTzFGQlEzQkVMRTlCUVU4c1IwRkJZU3hEUVVGRE8wdEJRM1JDTzFOQlFVMHNTVUZCU1N4blFrRkJaMElzU1VGQlNTeEhRVUZITEVWQlFVVTdVVUZEYkVNc1QwRkJUeXhqUVVGakxFTkJRVU1zUjBGQlJ5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU01UXp0VFFVRk5MRWxCUVVrc1IwRkJSeXhaUVVGWkxFdEJRVXNzUlVGQlJUdFJRVU12UWl4UFFVRlBMRTFCUVVNc1IwRkJZU3hEUVVGRExFdEJRVXNzYlVOQlFVc3NSMEZCWVN4RFFVRkRMRTlCUVU4c1EwRkJRenRMUVVOMlJEdFRRVUZOTzFGQlEwd3NUMEZCVHl4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03UzBGRGRrSTdRVUZEU0N4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxHRkJRV0VzUTBGQlF5eEpRVUZoTzBsQlEzcERMRTlCUVU4c1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNN1FVRkRla1VzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUhWcElHWnliMjBnSjJSaGRHRm5jbTlyTFdGd2FTOTFhU2M3WEc1cGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklFUkhJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzlrWnljN1hHNWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1Z5Y205eVZHOURiMjV6YjJ4bEtHVnljam9nWVc1NUtUb2djM1J5YVc1bklIdGNiaUFnYVdZZ0tIUjVjR1Z2WmlCbGNuSWdQVDA5SUNkemRISnBibWNuSUh4OElHVnljaUJwYm5OMFlXNWpaVzltSUZOMGNtbHVaeWtnZTF4dUlDQWdJSEpsZEhWeWJpQmxjbklnWVhNZ2MzUnlhVzVuTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLQ2NrZEdoeWIzZHVTbk5GY25KdmNpY2dhVzRnWlhKeUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUdWeWNtOXlWRzlEYjI1emIyeGxLR1Z5Y2xzbkpIUm9jbTkzYmtwelJYSnliM0luWFNrN1hHNGdJSDBnWld4elpTQnBaaUFvWlhKeUlHbHVjM1JoYm1ObGIyWWdSWEp5YjNJcElIdGNiaUFnSUNCeVpYUjFjbTRnS0dWeWNpQmhjeUJGY25KdmNpa3VjM1JoWTJzZ1B6OGdLR1Z5Y2lCaGN5QkZjbkp2Y2lrdWJXVnpjMkZuWlR0Y2JpQWdmU0JsYkhObElIdGNiaUFnSUNCeVpYUjFjbTRnWlhKeUxuUnZVM1J5YVc1bktDazdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEpsWTNSVWIwTnZibk52YkdVb2NtVmpkRG9nUkVjdVVtVmpkQ2s2SUhOMGNtbHVaeUI3WEc0Z0lISmxkSFZ5YmlCZ0tIZzlKSHR5WldOMExuaDlMQ0I1UFNSN2NtVmpkQzU1ZlN3Z2R6MGtlM0psWTNRdWQybGtkR2g5TENCb1BTUjdjbVZqZEM1b1pXbG5hSFI5S1dBN1hHNTlYRzRpWFgwPSIsImltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0IHsgZmluZE1vbm9tZXJzLCBwYXJzZUhlbG0sIGdldFBhcnRzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBwcmludExlZnRPckNlbnRlcmVkIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9iaW8vc3JjL3V0aWxzL2NlbGwtcmVuZGVyZXInO1xuaW1wb3J0IHsgZXJyb3JUb0NvbnNvbGUgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90by1jb25zb2xlJztcbmV4cG9ydCBjbGFzcyBIZWxtQ2VsbFJlbmRlcmVyIGV4dGVuZHMgREcuR3JpZENlbGxSZW5kZXJlciB7XG4gICAgZ2V0IG5hbWUoKSB7IHJldHVybiAnaGVsbSc7IH1cbiAgICBnZXQgY2VsbFR5cGUoKSB7IHJldHVybiAnaGVsbSc7IH1cbiAgICBnZXQgZGVmYXVsdFdpZHRoKCkgeyByZXR1cm4gNDAwOyB9XG4gICAgZ2V0IGRlZmF1bHRIZWlnaHQoKSB7IHJldHVybiAxMDA7IH1cbiAgICBvbk1vdXNlTW92ZShncmlkQ2VsbCwgZSkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG1heExlbmd0aFdvcmRzU3VtID0gZ3JpZENlbGwuY2VsbC5jb2x1bW4udGVtcFsnaGVsbS1zdW0tbWF4TGVuZ3RoV29yZHMnXTtcbiAgICAgICAgICAgIGNvbnN0IG1heEluZGV4ID0gT2JqZWN0LnZhbHVlcyhncmlkQ2VsbC5jZWxsLmNvbHVtbi50ZW1wWydoZWxtLW1heExlbmd0aFdvcmRzJ10pLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBjb25zdCBhcmdzWCA9IGUub2Zmc2V0WCAtIGdyaWRDZWxsLmdyaWRDb2x1bW4ubGVmdCArIChncmlkQ2VsbC5ncmlkQ29sdW1uLmxlZnQgLSBncmlkQ2VsbC5ib3VuZHMueCk7XG4gICAgICAgICAgICBsZXQgbGVmdCA9IDA7XG4gICAgICAgICAgICBsZXQgcmlnaHQgPSBtYXhJbmRleDtcbiAgICAgICAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgbWF4TGVuZ3RoV29yZHNTdW1bbWF4SW5kZXggKyAxXSA9IGFyZ3NYICsgMTtcbiAgICAgICAgICAgIGxldCBtaWQgPSAwO1xuICAgICAgICAgICAgaWYgKGFyZ3NYID4gbWF4TGVuZ3RoV29yZHNTdW1bMF0pIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoIWZvdW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIG1pZCA9IE1hdGguZmxvb3IoKHJpZ2h0ICsgbGVmdCkgLyAyKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3NYID49IG1heExlbmd0aFdvcmRzU3VtW21pZF0gJiYgYXJnc1ggPD0gbWF4TGVuZ3RoV29yZHNTdW1bbWlkICsgMV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBtaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJnc1ggPCBtYXhMZW5ndGhXb3Jkc1N1bVttaWRdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByaWdodCA9IG1pZCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJnc1ggPiBtYXhMZW5ndGhXb3Jkc1N1bVttaWQgKyAxXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IG1pZCArIDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnQgPT0gcmlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxlZnQgPSAoYXJnc1ggPj0gbWF4TGVuZ3RoV29yZHNTdW1bbGVmdF0pID8gbGVmdCArIDEgOiBsZWZ0O1xuICAgICAgICAgICAgY29uc3QgbW9ub21lcnMgPSBmaW5kTW9ub21lcnMoZ3JpZENlbGwuY2VsbC52YWx1ZSk7XG4gICAgICAgICAgICBsZXQgcyA9IChfYSA9IGdyaWRDZWxsLmNlbGwudmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICAgICAgbGV0IHN1YlBhcnRzID0gcGFyc2VIZWxtKHMpO1xuICAgICAgICAgICAgbGV0IGFsbFBhcnRzID0gZ2V0UGFydHMoc3ViUGFydHMsIHMpO1xuICAgICAgICAgICAgbGV0IHRvb2x0aXBNZXNzYWdlID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbFBhcnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbm9tZXJzLmhhcyhhbGxQYXJ0c1tpXSkpXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXBNZXNzYWdlW2ldID0gdWkuZGl2VihbXG4gICAgICAgICAgICAgICAgICAgICAgICB1aS5kaXZUZXh0KGBNb25vbWVyICR7YWxsUGFydHNbaV19IG5vdCBmb3VuZC5gKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVpLmRpdlRleHQoJ09wZW4gdGhlIENvbnRleHQgUGFuZWwsIHRoZW4gZXhwYW5kIE1hbmFnZSBMaWJyYXJpZXMnKVxuICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICgoKChfYyA9IChfYiA9IHRvb2x0aXBNZXNzYWdlW2xlZnRdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2hpbGROb2Rlcy5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDApID4gMCkpXG4gICAgICAgICAgICAgICAgPyB1aS50b29sdGlwLnNob3codWkuZGl2KHRvb2x0aXBNZXNzYWdlW2xlZnRdKSwgZS54ICsgMTYsIGUueSArIDE2KVxuICAgICAgICAgICAgICAgIDogdWkudG9vbHRpcC5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc3QgZXJyTXNnID0gZXJyb3JUb0NvbnNvbGUoZXJyKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0hlbG06IEhlbG1DZWxsUmVuZGVyZXIub25Nb3VzZU1vdmUoKSBlcnJvcjpcXG4nICsgZXJyTXNnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZW5kZXIoZywgeCwgeSwgdywgaCwgZ3JpZENlbGwsIGNlbGxTdHlsZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGdyaWQgPSBncmlkQ2VsbC5ncmlkUm93ICE9PSAtMSA/IGdyaWRDZWxsLmdyaWQgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuICAgICAgICBjb25zdCBncmF5Q29sb3IgPSAnIzgwODA4MCc7XG4gICAgICAgIGNvbnN0IG1vbm9tZXJzID0gZmluZE1vbm9tZXJzKGdyaWRDZWxsLmNlbGwudmFsdWUpO1xuICAgICAgICBsZXQgcyA9IChfYSA9IGdyaWRDZWxsLmNlbGwudmFsdWUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICcnO1xuICAgICAgICBsZXQgc3ViUGFydHMgPSBwYXJzZUhlbG0ocyk7XG4gICAgICAgIGlmIChtb25vbWVycy5zaXplID09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGhvc3QgPSB1aS5kaXYoW10sIHsgc3R5bGU6IHsgd2lkdGg6IGAke3d9cHhgLCBoZWlnaHQ6IGAke2h9cHhgIH0gfSk7XG4gICAgICAgICAgICBob3N0LnNldEF0dHJpYnV0ZSgnZGF0YWZvcm1hdCcsICdoZWxtJyk7XG4gICAgICAgICAgICBob3N0LnNldEF0dHJpYnV0ZSgnZGF0YScsIGdyaWRDZWxsLmNlbGwudmFsdWUpO1xuICAgICAgICAgICAgZ3JpZENlbGwuZWxlbWVudCA9IGhvc3Q7XG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IG5ldyBKU0RyYXcyLkVkaXRvcihob3N0LCB7IHdpZHRoOiB3LCBoZWlnaHQ6IGgsIHNraW46ICd3OCcsIHZpZXdvbmx5OiB0cnVlIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb25vbWVycy5zaXplID4gMCkge1xuICAgICAgICAgICAgdyA9IGdyaWQgPyBNYXRoLm1pbihncmlkLmNhbnZhcy53aWR0aCAtIHgsIHcpIDogZy5jYW52YXMud2lkdGggLSB4O1xuICAgICAgICAgICAgZy5zYXZlKCk7XG4gICAgICAgICAgICBnLmJlZ2luUGF0aCgpO1xuICAgICAgICAgICAgZy5yZWN0KHgsIHksIHcsIGgpO1xuICAgICAgICAgICAgZy5jbGlwKCk7XG4gICAgICAgICAgICBnLmZvbnQgPSAnMTJweCBtb25vc3BhY2UnO1xuICAgICAgICAgICAgZy50ZXh0QmFzZWxpbmUgPSAndG9wJztcbiAgICAgICAgICAgIGxldCB4MSA9IHg7XG4gICAgICAgICAgICBsZXQgbWF4TGVuZ3RoV29yZHMgPSB7fTtcbiAgICAgICAgICAgIGxldCBtYXhMZW5ndGhXb3JkU3VtID0ge307XG4gICAgICAgICAgICBsZXQgYWxsUGFydHMgPSBnZXRQYXJ0cyhzdWJQYXJ0cywgcyk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbFBhcnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoV29yZHNbaV0gPSBhbGxQYXJ0c1tpXS5sZW5ndGggKiA3O1xuICAgICAgICAgICAgICAgIGxldCBjb2xvciA9IG1vbm9tZXJzLmhhcyhhbGxQYXJ0c1tpXSkgPyAncmVkJyA6IGdyYXlDb2xvcjtcbiAgICAgICAgICAgICAgICBnLmZpbGxTdHlsZSA9IHVuZGVmaW5lZENvbG9yO1xuICAgICAgICAgICAgICAgIHgxID0gcHJpbnRMZWZ0T3JDZW50ZXJlZCh4MSwgeSwgdywgaCwgZywgYWxsUGFydHNbaV0sIGNvbG9yLCAwLCB0cnVlLCAxLjApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWF4TGVuZ3RoV29yZFN1bVswXSA9IG1heExlbmd0aFdvcmRzWzBdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBhbGxQYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIG1heExlbmd0aFdvcmRTdW1baV0gPSBtYXhMZW5ndGhXb3JkU3VtW2kgLSAxXSArIG1heExlbmd0aFdvcmRzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JpZENlbGwuY2VsbC5jb2x1bW4udGVtcCA9IHtcbiAgICAgICAgICAgICAgICAnaGVsbS1zdW0tbWF4TGVuZ3RoV29yZHMnOiBtYXhMZW5ndGhXb3JkU3VtLFxuICAgICAgICAgICAgICAgICdoZWxtLW1heExlbmd0aFdvcmRzJzogbWF4TGVuZ3RoV29yZHNcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBnLnJlc3RvcmUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsImV4cG9ydCBjb25zdCBqc29uU2RmTW9ub21lckxpYkRpY3QgPSB7XG4gICAgXCJtb25vbWVyVHlwZVwiOiBudWxsLFxuICAgIFwic21pbGVzXCI6IG51bGwsXG4gICAgXCJuYW1lXCI6IFwiTW9ub21lck5hbWVcIixcbiAgICBcImF1dGhvclwiOiBudWxsLFxuICAgIFwibW9sZmlsZVwiOiBcIm1vbGVjdWxlXCIsXG4gICAgXCJuYXR1cmFsQW5hbG9nXCI6IFwiTW9ub21lck5hdHVyYWxBbmFsb2dDb2RlXCIsXG4gICAgXCJyZ3JvdXBzXCI6IFwiTW9ub21lckNhcHNcIixcbiAgICBcImNyZWF0ZURhdGVcIjogbnVsbCxcbiAgICBcImlkXCI6IG51bGwsXG4gICAgXCJwb2x5bWVyVHlwZVwiOiBcIk1vbm9tZXJUeXBlXCIsXG4gICAgXCJzeW1ib2xcIjogXCJNb25vbWVyQ29kZVwiXG59O1xuZXhwb3J0IGNvbnN0IFNNSUxFUyA9ICdzbWlsZXMnO1xuZXhwb3J0IGNvbnN0IFJHUk9VUFMgPSBcInJncm91cHNcIjtcbmV4cG9ydCBjb25zdCBNT05PTUVSX1NZTUJPTCA9IFwic3ltYm9sXCI7XG5leHBvcnQgY29uc3QgUkdST1VQX0NBUF9HUk9VUF9TTUlMRVMgPSBcImNhcEdyb3VwU21pbGVzXCI7XG5leHBvcnQgY29uc3QgUkdST1VQX0FMVEVSX0lEID0gXCJhbHRlcm5hdGVJZFwiO1xuZXhwb3J0IGNvbnN0IFJHUk9VUF9DQVBfR1JPVVBfTkFNRSA9IFwiY2FwR3JvdXBOYW1lXCI7XG5leHBvcnQgY29uc3QgUkdST1VQX0xBQkVMID0gXCJsYWJlbFwiO1xuZXhwb3J0IGNvbnN0IFNERl9NT05PTUVSX05BTUUgPSBcIk1vbm9tZXJOYW1lXCI7XG4iLCJpbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuZXhwb3J0IGNsYXNzIEhlbG1XZWJFZGl0b3Ige1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLncgPSAyMDA7XG4gICAgICAgIHRoaXMuaCA9IDEwMDtcbiAgICAgICAgdGhpcy5ob3N0ID0gdWkuZGl2KFtdLCB7IHN0eWxlOiB7IHdpZHRoOiBgJHt0aGlzLnd9cHhgLCBoZWlnaHQ6IGAke3RoaXMuaH1weGAgfSB9KTtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSBuZXcgSlNEcmF3Mi5FZGl0b3IodGhpcy5ob3N0LCB7IHdpZHRoOiB0aGlzLncsIGhlaWdodDogdGhpcy5oLCB2aWV3b25seTogdHJ1ZSB9KTtcbiAgICB9XG4gICAgcmVzaXplRWRpdG9yKHcsIGgpIHtcbiAgICAgICAgdGhpcy5lZGl0b3Iuc2V0U2l6ZSh3LCBoKTtcbiAgICB9XG4gICAgY3JlYXRlV2ViRWRpdG9yKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvclZpZXcgPSB1aS5kaXYoKTtcbiAgICAgICAgb3JnLmhlbG0ud2ViZWRpdG9yLk1vbFZpZXdlci5tb2xzY2FsZSA9IDAuODtcbiAgICAgICAgY29uc3Qgd2ViRWRpdG9yID0gbmV3IHNjaWwuaGVsbS5BcHAoZWRpdG9yVmlldywge1xuICAgICAgICAgICAgc2hvd2Fib3V0OiBmYWxzZSxcbiAgICAgICAgICAgIG1leGZvbnRzaXplOiAnOTAlJyxcbiAgICAgICAgICAgIG1leHJuYXBpbm9udGFiOiB0cnVlLFxuICAgICAgICAgICAgdG9wbWFyZ2luOiAyMCxcbiAgICAgICAgICAgIG1leG1vbm9tZXJzdGFiOiB0cnVlLFxuICAgICAgICAgICAgc2VxdWVuY2V2aWV3b25seTogZmFsc2UsXG4gICAgICAgICAgICBtZXhmYXZvcml0ZWZpcnN0OiB0cnVlLFxuICAgICAgICAgICAgbWV4ZmlsdGVyOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzaXplcyA9IHdlYkVkaXRvci5jYWxjdWxhdGVTaXplcygpO1xuICAgICAgICB3ZWJFZGl0b3IuY2FudmFzLnJlc2l6ZShzaXplcy5yaWdodHdpZHRoIC0gMTAwLCBzaXplcy50b3BoZWlnaHQgLSAyMTApO1xuICAgICAgICBsZXQgcyA9IHsgd2lkdGg6IHNpemVzLnJpZ2h0d2lkdGggLSAxMDAgKyAncHgnLCBoZWlnaHQ6IHNpemVzLmJvdHRvbWhlaWdodCArICdweCcgfTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIHNjaWwuYXBwbHkod2ViRWRpdG9yLnNlcXVlbmNlLnN0eWxlLCBzKTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIHNjaWwuYXBwbHkod2ViRWRpdG9yLm5vdGF0aW9uLnN0eWxlLCBzKTtcbiAgICAgICAgcyA9IHsgd2lkdGg6IHNpemVzLnJpZ2h0d2lkdGggKyAncHgnLCBoZWlnaHQ6IChzaXplcy5ib3R0b21oZWlnaHQgKyB3ZWJFZGl0b3IudG9vbGJhcmhlaWdodCkgKyAncHgnIH07XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBzY2lsLmFwcGx5KHdlYkVkaXRvci5wcm9wZXJ0aWVzLnBhcmVudC5zdHlsZSwgcyk7XG4gICAgICAgIHdlYkVkaXRvci5zdHJ1Y3R1cmV2aWV3LnJlc2l6ZShzaXplcy5yaWdodHdpZHRoLCBzaXplcy5ib3R0b21oZWlnaHQgKyB3ZWJFZGl0b3IudG9vbGJhcmhlaWdodCk7XG4gICAgICAgIHdlYkVkaXRvci5tZXgucmVzaXplKHNpemVzLnRvcGhlaWdodCAtIDgwKTtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB3ZWJFZGl0b3IuY2FudmFzLmhlbG0uc2V0U2VxdWVuY2UodmFsdWUsICdIRUxNJyk7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgICAgIHJldHVybiB7IGVkaXRvckRpdjogZWRpdG9yVmlldywgd2ViRWRpdG9yOiB3ZWJFZGl0b3IgfTtcbiAgICB9XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gZ2V0UGFydHMoc3ViUGFydHMsIHMpIHtcbiAgICBsZXQgaiA9IDA7XG4gICAgbGV0IGFsbFBhcnRzID0gW107XG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBzdWJQYXJ0cy5sZW5ndGg7ICsraykge1xuICAgICAgICBsZXQgaW5kZXhPZk1vbm9tZXIgPSBzLmluZGV4T2Yoc3ViUGFydHNba10pO1xuICAgICAgICBsZXQgaGVsbUJlZm9yZU1vbm9tZXIgPSBzLnNsaWNlKGosIGluZGV4T2ZNb25vbWVyKTtcbiAgICAgICAgYWxsUGFydHMucHVzaChoZWxtQmVmb3JlTW9ub21lcik7XG4gICAgICAgIGFsbFBhcnRzLnB1c2goc3ViUGFydHNba10pO1xuICAgICAgICBzID0gcy5zdWJzdHJpbmcoaW5kZXhPZk1vbm9tZXIgKyBzdWJQYXJ0c1trXS5sZW5ndGgpO1xuICAgIH1cbiAgICBhbGxQYXJ0cy5wdXNoKHMpO1xuICAgIHJldHVybiBhbGxQYXJ0cztcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUhlbG0ocykge1xuICAgIHZhciBzZWN0aW9ucyA9IHNwbGl0KHMsICckJyk7XG4gICAgcyA9IHNlY3Rpb25zWzBdO1xuICAgIHZhciBtb25vbWVycyA9IFtdO1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIGlmICghc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHMpKSB7XG4gICAgICAgIHZhciBzZXFzID0gc3BsaXQocywgJ3wnKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXFzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICB2YXIgZSA9IGRldGFjaEFubm90YXRpb24oc2Vxc1tpXSk7XG4gICAgICAgICAgICBzID0gZS5zdHI7XG4gICAgICAgICAgICB2YXIgcCA9IHMuaW5kZXhPZigneycpO1xuICAgICAgICAgICAgcyA9IHMuc3Vic3RyaW5nKHAgKyAxKTtcbiAgICAgICAgICAgIHAgPSBzLmluZGV4T2YoJ30nKTtcbiAgICAgICAgICAgIHMgPSBzLnN1YnN0cmluZygwLCBwKTtcbiAgICAgICAgICAgIHZhciBzcyA9IHNwbGl0KHMsICcuJyk7XG4gICAgICAgICAgICBmb3IgKHZhciBtb25vbWVyIG9mIHNzKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1vbm9tZXIuaW5jbHVkZXMoJygnKSAmJiBtb25vbWVyLmluY2x1ZGVzKCcpJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRzID0gbW9ub21lci5yZXBsYWNlKC9bKCldL2csICcnKS5zcGxpdCgnJyk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGVsIG9mIGVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtb25vbWVycy5wdXNoKGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtb25vbWVyLmluY2x1ZGVzKCdbJykgJiYgbW9ub21lci5pbmNsdWRlcygnXScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gbW9ub21lci5tYXRjaCgvKD88PVxcWykuKj8oPz1cXF0pL2csICcnKTtcbiAgICAgICAgICAgICAgICAgICAgbW9ub21lcnMucHVzaChlbGVtZW50WzBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG1vbm9tZXJzLnB1c2gobW9ub21lcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtb25vbWVycztcbn1cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTW9ub21lcnMoaGVsbVN0cmluZykge1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIGNvbnN0IHR5cGVzID0gT2JqZWN0LmtleXMob3JnLmhlbG0ud2ViZWRpdG9yLm1vbm9tZXJUeXBlTGlzdCgpKTtcbiAgICBjb25zdCBtb25vbWVycyA9IFtdO1xuICAgIGNvbnN0IG1vbm9tZXJfbmFtZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBtb25vbWVycy5wdXNoKG5ldyBzY2lsLmhlbG0uTW9ub21lcnMuZ2V0TW9ub21lclNldCh0eXBlc1tpXSkpO1xuICAgICAgICBPYmplY3Qua2V5cyhtb25vbWVyc1tpXSkuZm9yRWFjaChrID0+IHtcbiAgICAgICAgICAgIG1vbm9tZXJfbmFtZXMucHVzaChtb25vbWVyc1tpXVtrXS5pZCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBzcGxpdF9zdHJpbmcgPSBwYXJzZUhlbG0oaGVsbVN0cmluZyk7XG4gICAgcmV0dXJuIG5ldyBTZXQoc3BsaXRfc3RyaW5nLmZpbHRlcih2YWwgPT4gIW1vbm9tZXJfbmFtZXMuaW5jbHVkZXModmFsKSkpO1xufVxuZnVuY3Rpb24gc3BsaXQocywgc2VwKSB7XG4gICAgdmFyIHJldCA9IFtdO1xuICAgIHZhciBmcmFnID0gJyc7XG4gICAgdmFyIHBhcmVudGhlc2VzID0gMDtcbiAgICB2YXIgYnJhY2tldCA9IDA7XG4gICAgdmFyIGJyYWNlcyA9IDA7XG4gICAgdmFyIHF1b3RlID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGMgPSBzLnN1YnN0cmluZyhpLCBpICsgMSk7XG4gICAgICAgIGlmIChjID09IHNlcCAmJiBicmFja2V0ID09IDAgJiYgcGFyZW50aGVzZXMgPT0gMCAmJiBicmFjZXMgPT0gMCAmJiBxdW90ZSA9PSAwKSB7XG4gICAgICAgICAgICByZXQucHVzaChmcmFnKTtcbiAgICAgICAgICAgIGZyYWcgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZyYWcgKz0gYztcbiAgICAgICAgICAgIGlmIChxdW90ZSA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXFxcXCcgJiYgaSArIDEgPCBzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICArK2k7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjMiA9IHMuc3Vic3RyaW5nKGksIGkgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgZnJhZyArPSBjMjtcbiAgICAgICAgICAgICAgICAgICAgYyArPSBjMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYyA9PSAnXFxcIicpIHtcbiAgICAgICAgICAgICAgICBpZiAoIShpID4gMCAmJiBzLnN1YnN0cmluZyhpIC0gMSwgaSkgPT0gJ1xcXFwnKSlcbiAgICAgICAgICAgICAgICAgICAgcXVvdGUgPSBxdW90ZSA9PSAwID8gMSA6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjID09ICdbJylcbiAgICAgICAgICAgICAgICArK2JyYWNrZXQ7XG4gICAgICAgICAgICBlbHNlIGlmIChjID09ICddJylcbiAgICAgICAgICAgICAgICAtLWJyYWNrZXQ7XG4gICAgICAgICAgICBlbHNlIGlmIChjID09ICcoJylcbiAgICAgICAgICAgICAgICArK3BhcmVudGhlc2VzO1xuICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnKScpXG4gICAgICAgICAgICAgICAgLS1wYXJlbnRoZXNlcztcbiAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ3snKVxuICAgICAgICAgICAgICAgICsrYnJhY2VzO1xuICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnfScpXG4gICAgICAgICAgICAgICAgLS1icmFjZXM7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0LnB1c2goZnJhZyk7XG4gICAgcmV0dXJuIHJldDtcbn1cbmZ1bmN0aW9uIGRldGFjaEFubm90YXRpb24ocykge1xuICAgIHZhciByZXQgPSBfZGV0YWNoQXBwZW5kaXgocywgJ1xcXCInKTtcbiAgICBpZiAocmV0LnRhZyAhPSBudWxsKVxuICAgICAgICByZXR1cm4gcmV0O1xuICAgIHZhciByID0gX2RldGFjaEFwcGVuZGl4KHMsICdcXCcnKTtcbiAgICByZXR1cm4geyB0YWc6IHJldC50YWcsIHJlcGVhdDogci50YWcsIHN0cjogci5zdHIgfTtcbn1cbmZ1bmN0aW9uIF9kZXRhY2hBcHBlbmRpeChzLCBjKSB7XG4gICAgdmFyIHRhZyA9IG51bGw7XG4gICAgLy9AdHMtaWdub3JlXG4gICAgaWYgKHNjaWwuVXRpbHMuZW5kc3dpdGgocywgYykpIHtcbiAgICAgICAgdmFyIHAgPSBzLmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlIChwID4gMCkge1xuICAgICAgICAgICAgcCA9IHMubGFzdEluZGV4T2YoYywgcCAtIDEpO1xuICAgICAgICAgICAgaWYgKHAgPD0gMCB8fCBzLnN1YnN0cmluZyhwIC0gMSwgcCkgIT0gJ1xcXFwnKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwID4gMCAmJiBwIDwgcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0YWcgPSBzLnN1YnN0cmluZyhwICsgMSwgcy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIHMgPSBzLnN1YnN0cmluZygwLCBwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodGFnICE9IG51bGwpXG4gICAgICAgIHRhZyA9IHRhZy5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcXFwnICsgYywgJ2cnKSwgYyk7XG4gICAgcmV0dXJuIHsgdGFnOiB1bmVzY2FwZSh0YWcpLCBzdHI6IHMgfTtcbn1cbmZ1bmN0aW9uIHVuZXNjYXBlKHMpIHtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBpZiAoc2NpbC5VdGlscy5pc051bGxPckVtcHR5KHMpKVxuICAgICAgICByZXR1cm4gcztcbiAgICByZXR1cm4gcy5yZXBsYWNlKC9bXFxcXF0uL2csIGZ1bmN0aW9uIChtKSB7XG4gICAgICAgIHN3aXRjaCAobSkge1xuICAgICAgICAgICAgY2FzZSAnXFxcXHInOlxuICAgICAgICAgICAgICAgIHJldHVybiAnXFxyJztcbiAgICAgICAgICAgIGNhc2UgJ1xcXFxuJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1xcbic7XG4gICAgICAgICAgICBjYXNlICdcXFxcdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdcXHQnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gbS5zdWJzdHJpbmcoMSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gREc7IiwibW9kdWxlLmV4cG9ydHMgPSBncm9rOyIsIm1vZHVsZS5leHBvcnRzID0gdWk7IiwibW9kdWxlLmV4cG9ydHMgPSB3dTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG4vKiBEbyBub3QgY2hhbmdlIHRoZXNlIGltcG9ydCBsaW5lcyB0byBtYXRjaCBleHRlcm5hbCBtb2R1bGVzIGluIHdlYnBhY2sgY29uZmlndXJhdGlvbiAqL1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCB7IFJHUk9VUF9DQVBfR1JPVVBfTkFNRSwgUkdST1VQX0xBQkVMLCBTTUlMRVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBIZWxtV2ViRWRpdG9yIH0gZnJvbSAnLi9oZWxtLXdlYi1lZGl0b3InO1xuaW1wb3J0IHsgSGVsbUNlbGxSZW5kZXJlciB9IGZyb20gJy4vY2VsbC1yZW5kZXJlcic7XG5pbXBvcnQgeyBOb3RhdGlvbkNvbnZlcnRlciB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy91dGlscy9ub3RhdGlvbi1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgZmluZE1vbm9tZXJzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBlcnJvclRvQ29uc29sZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3RvLWNvbnNvbGUnO1xuZXhwb3J0IGNvbnN0IF9wYWNrYWdlID0gbmV3IERHLlBhY2thZ2UoKTtcbmxldCBtb25vbWVyTGliID0gbnVsbDtcbi8vdGFnczogaW5pdFxuZXhwb3J0IGZ1bmN0aW9uIGluaXRIZWxtKCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBkb2pvLnJlYWR5KGZ1bmN0aW9uICgpIHsgcmVzb2x2ZShudWxsKTsgfSk7XG4gICAgICAgICAgICB9KSwgeWllbGQgZ3Jvay5mdW5jdGlvbnMuY2FsbCgnQmlvOmdldEJpb0xpYicpXSkudGhlbigoW18sIGxpYl0pID0+IHtcbiAgICAgICAgICAgIG1vbm9tZXJMaWIgPSBsaWI7XG4gICAgICAgICAgICByZXdyaXRlTGlicmFyaWVzKCk7IC8vIGluaXRIZWxtKClcbiAgICAgICAgICAgIG1vbm9tZXJMaWIub25DaGFuZ2VkLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJld3JpdGVMaWJyYXJpZXMoKTsgLy8gaW5pdEhlbG0oKVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb25UeXBlTGlzdCA9IG1vbm9tZXJMaWIuZ2V0VHlwZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnU3RyID0gJ01vbm9tZXIgbGliIHVwZGF0ZWQ6PGJyIC8+JyArIChtb25UeXBlTGlzdC5sZW5ndGggPT0gMCA/ICdlbXB0eScgOiBtb25UeXBlTGlzdC5tYXAoKG1vblR5cGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHttb25UeXBlfSAke21vbm9tZXJMaWIuZ2V0TW9ub21lck5hbWVzQnlUeXBlKG1vblR5cGUpLmxlbmd0aH1gO1xuICAgICAgICAgICAgICAgICAgICB9KS5qb2luKCc8YnIgLz4nKSk7XG4gICAgICAgICAgICAgICAgICAgIGdyb2suc2hlbGwuaW5mbyhtc2dTdHIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVyck1zZyA9IGVycm9yVG9Db25zb2xlKGVycik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0hlbG06IGluaXRIZWxtIG1vbm9tZXJMaWIub25DaGFuZ2VkKCkgZXJyb3I6XFxuJyArIGVyck1zZyk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRocm93IGVycjsgLy8gUHJldmVudCBkaXNhYmxpbmcgZXZlbnQgaGFuZGxlclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIHJld3JpdGVMaWJyYXJpZXMoKSB7XG4gICAgb3JnLmhlbG0ud2ViZWRpdG9yLk1vbm9tZXJzLmNsZWFyKCk7XG4gICAgbW9ub21lckxpYi5nZXRUeXBlcygpLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICAgICAgY29uc3QgbW1zID0gbW9ub21lckxpYi5nZXRNb25vbWVyTmFtZXNCeVR5cGUodHlwZSk7XG4gICAgICAgIG1tcy5mb3JFYWNoKChzeW1ib2wpID0+IHtcbiAgICAgICAgICAgIGxldCBpc0Jyb2tlbiA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgbW9ub21lciA9IG1vbm9tZXJMaWIuZ2V0TW9ub21lcih0eXBlLCBzeW1ib2wpO1xuICAgICAgICAgICAgY29uc3Qgd2ViRWRpdG9yTW9ub21lciA9IHtcbiAgICAgICAgICAgICAgICBpZDogc3ltYm9sLFxuICAgICAgICAgICAgICAgIG06IG1vbm9tZXIubW9sZmlsZSxcbiAgICAgICAgICAgICAgICBuOiBtb25vbWVyLm5hbWUsXG4gICAgICAgICAgICAgICAgbmE6IG1vbm9tZXIubmF0dXJhbEFuYWxvZyxcbiAgICAgICAgICAgICAgICByczogbW9ub21lci5yZ3JvdXBzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICB0eXBlOiBtb25vbWVyLnBvbHltZXJUeXBlLFxuICAgICAgICAgICAgICAgIG10OiBtb25vbWVyLm1vbm9tZXJUeXBlLFxuICAgICAgICAgICAgICAgIGF0OiB7fVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChtb25vbWVyLnJncm91cHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHdlYkVkaXRvck1vbm9tZXIucnMgPSBtb25vbWVyLnJncm91cHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGNvbnN0IGF0ID0ge307XG4gICAgICAgICAgICAgICAgbW9ub21lci5yZ3JvdXBzLmZvckVhY2goaXQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhdFtpdFtSR1JPVVBfTEFCRUxdXSA9IGl0W1JHUk9VUF9DQVBfR1JPVVBfTkFNRV07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgd2ViRWRpdG9yTW9ub21lci5hdCA9IGF0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobW9ub21lci5kYXRhW1NNSUxFU10gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHdlYkVkaXRvck1vbm9tZXIucnMgPSBPYmplY3Qua2V5cyhnZXRSUyhtb25vbWVyLmRhdGFbU01JTEVTXS50b1N0cmluZygpKSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHdlYkVkaXRvck1vbm9tZXIuYXQgPSBnZXRSUyhtb25vbWVyLmRhdGFbU01JTEVTXS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlzQnJva2VuID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNCcm9rZW4pXG4gICAgICAgICAgICAgICAgb3JnLmhlbG0ud2ViZWRpdG9yLk1vbm9tZXJzLmFkZE9uZU1vbm9tZXIod2ViRWRpdG9yTW9ub21lcik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIE9ic29sZXRlXG4gICAgbGV0IGdyaWQgPSBncm9rLnNoZWxsLnR2LmdyaWQ7XG4gICAgaWYgKGdyaWQpXG4gICAgICAgIGdyaWQuaW52YWxpZGF0ZSgpO1xufVxuLy9uYW1lOiBoZWxtQ2VsbFJlbmRlcmVyXG4vL3RhZ3M6IGNlbGxSZW5kZXJlclxuLy9tZXRhLmNlbGxUeXBlOiBoZWxtXG4vL21ldGEuY29sdW1uVGFnczogdW5pdHM9aGVsbVxuLy9vdXRwdXQ6IGdyaWRfY2VsbF9yZW5kZXJlciByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiBoZWxtQ2VsbFJlbmRlcmVyKCkge1xuICAgIHJldHVybiBuZXcgSGVsbUNlbGxSZW5kZXJlcigpO1xufVxuZnVuY3Rpb24gY2hlY2tNb25vbWVyc0FuZE9wZW5XZWJFZGl0b3IoY2VsbCwgdmFsdWUsIHVuaXRzKSB7XG4gICAgY29uc3QgY2VsbFZhbHVlID0gdHlwZW9mIHVuaXRzID09PSAndW5kZWZpbmVkJyA/IGNlbGwudmFsdWUgOiB2YWx1ZTtcbiAgICBjb25zdCBtb25vbWVycyA9IGZpbmRNb25vbWVycyhjZWxsVmFsdWUpO1xuICAgIGlmIChtb25vbWVycy5zaXplID09IDApXG4gICAgICAgIHdlYkVkaXRvcihjZWxsLCB2YWx1ZSwgdW5pdHMpO1xuICAgIGVsc2VcbiAgICAgICAgZ3Jvay5zaGVsbC53YXJuaW5nKGBNb25vbWVycyAke0FycmF5LmZyb20obW9ub21lcnMpLmpvaW4oJywgJyl9IGFyZSBhYnNlbnQhIDxici8+YCArXG4gICAgICAgICAgICBgUGxlYXNlLCB1cGxvYWQgdGhlIG1vbm9tZXIgbGlicmFyeSEgPGJyLz5gICtcbiAgICAgICAgICAgIGA8YSBocmVmPVwiaHR0cHM6Ly9kYXRhZ3Jvay5haS9oZWxwL2RvbWFpbnMvYmlvL21hY3JvbW9sZWN1bGVzXCIgdGFyZ2V0PVwiX2JsYW5rXCI+TGVhcm4gbW9yZTwvYT5gKTtcbn1cbi8vdGFnczogY2VsbEVkaXRvclxuLy9kZXNjcmlwdGlvbjogTWFjcm9tb2xlY3VsZSAgXG4vL2lucHV0OiBncmlkX2NlbGwgY2VsbFxuLy9tZXRhLmNvbHVtblRhZ3M6IHF1YWxpdHk9TWFjcm9tb2xlY3VsZSwgdW5pdHM9aGVsbVxuZXhwb3J0IGZ1bmN0aW9uIGVkaXRNb2xlY3VsZUNlbGwoY2VsbCkge1xuICAgIGNoZWNrTW9ub21lcnNBbmRPcGVuV2ViRWRpdG9yKGNlbGwuY2VsbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xufVxuLy9uYW1lOiBPcGVuIEhlbG0gV2ViIEVkaXRvclxuLy9kZXNjcmlwdGlvbjogQWRkcyBlZGl0b3Jcbi8vbWV0YS5hY3Rpb246IE9wZW4gSGVsbSBXZWIgRWRpdG9yXG4vL2lucHV0OiBzdHJpbmcgbW9sIHsgc2VtVHlwZTogTWFjcm9tb2xlY3VsZSB9XG5leHBvcnQgZnVuY3Rpb24gb3BlbkVkaXRvcihtb2wpIHtcbiAgICBsZXQgZGYgPSBncm9rLnNoZWxsLnR2LmdyaWQuZGF0YUZyYW1lO1xuICAgIGxldCBjb2wgPSBkZi5jb2x1bW5zLmJ5U2VtVHlwZSgnTWFjcm9tb2xlY3VsZScpO1xuICAgIGxldCBjb252ZXJ0ZXIgPSBuZXcgTm90YXRpb25Db252ZXJ0ZXIoY29sKTtcbiAgICBjb25zdCByZXNTdHIgPSBjb252ZXJ0ZXIuY29udmVydFN0cmluZ1RvSGVsbShtb2wsICcvJyk7XG4gICAgY2hlY2tNb25vbWVyc0FuZE9wZW5XZWJFZGl0b3IoZGYuY3VycmVudENlbGwsIHJlc1N0ciwgY29sLmdldFRhZyhERy5UQUdTLlVOSVRTKSk7XG59XG4vL25hbWU6IFByb3BlcnRpZXNcbi8vdGFnczogcGFuZWwsIHdpZGdldHNcbi8vaW5wdXQ6IHN0cmluZyBoZWxtU3RyaW5nIHtzZW1UeXBlOiBNYWNyb21vbGVjdWxlfVxuLy9vdXRwdXQ6IHdpZGdldCByZXN1bHRcbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzUGFuZWwoaGVsbVN0cmluZykge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGxldCBncmlkID0gZ3Jvay5zaGVsbC50di5ncmlkO1xuICAgICAgICBsZXQgcGFyZW50ID0gZ3JpZC5yb290LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGhvc3QgPSB1aS5kaXYoW10pO1xuICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoaG9zdCk7XG4gICAgICAgIGxldCBlZGl0b3IgPSBuZXcgSlNEcmF3Mi5FZGl0b3IoaG9zdCwgeyB2aWV3b25seTogdHJ1ZSB9KTtcbiAgICAgICAgaG9zdC5zdHlsZS53aWR0aCA9ICcwcHgnO1xuICAgICAgICBob3N0LnN0eWxlLmhlaWdodCA9ICcwcHgnO1xuICAgICAgICBlZGl0b3Iuc2V0SGVsbShoZWxtU3RyaW5nKTtcbiAgICAgICAgbGV0IGZvcm11bGEgPSBlZGl0b3IuZ2V0Rm9ybXVsYSh0cnVlKTtcbiAgICAgICAgbGV0IG1vbFdlaWdodCA9IE1hdGgucm91bmQoZWRpdG9yLmdldE1vbFdlaWdodCgpICogMTAwKSAvIDEwMDtcbiAgICAgICAgbGV0IGNvZWYgPSBNYXRoLnJvdW5kKGVkaXRvci5nZXRFeHRpbmN0aW9uQ29lZmZpY2llbnQodHJ1ZSkgKiAxMDApIC8gMTAwO1xuICAgICAgICBwYXJlbnQubGFzdENoaWxkLnJlbW92ZSgpO1xuICAgICAgICByZXR1cm4gbmV3IERHLldpZGdldCh1aS50YWJsZUZyb21NYXAoe1xuICAgICAgICAgICAgJ2Zvcm11bGEnOiBmb3JtdWxhLnJlcGxhY2UoLzxzdWI+L2csICcnKS5yZXBsYWNlKC88XFwvc3ViPi9nLCAnJyksXG4gICAgICAgICAgICAnbW9sZWN1bGFyIHdlaWdodCc6IG1vbFdlaWdodCxcbiAgICAgICAgICAgICdleHRpbmN0aW9uIGNvZWZmaWNpZW50JzogY29lZixcbiAgICAgICAgfSkpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gd2ViRWRpdG9yKGNlbGwsIHZhbHVlLCB1bml0cykge1xuICAgIGxldCB2aWV3ID0gdWkuZGl2KCk7XG4gICAgbGV0IGRmID0gZ3Jvay5zaGVsbC50di5ncmlkLmRhdGFGcmFtZTtcbiAgICBsZXQgY29udmVydGVyID0gbmV3IE5vdGF0aW9uQ29udmVydGVyKGRmLmNvbHVtbnMuYnlTZW1UeXBlKCdNYWNyb21vbGVjdWxlJykpO1xuICAgIG9yZy5oZWxtLndlYmVkaXRvci5Nb2xWaWV3ZXIubW9sc2NhbGUgPSAwLjg7XG4gICAgbGV0IGFwcCA9IG5ldyBzY2lsLmhlbG0uQXBwKHZpZXcsIHtcbiAgICAgICAgc2hvd2Fib3V0OiBmYWxzZSxcbiAgICAgICAgbWV4Zm9udHNpemU6ICc5MCUnLFxuICAgICAgICBtZXhybmFwaW5vbnRhYjogdHJ1ZSxcbiAgICAgICAgdG9wbWFyZ2luOiAyMCxcbiAgICAgICAgbWV4bW9ub21lcnN0YWI6IHRydWUsXG4gICAgICAgIHNlcXVlbmNldmlld29ubHk6IGZhbHNlLFxuICAgICAgICBtZXhmYXZvcml0ZWZpcnN0OiB0cnVlLFxuICAgICAgICBtZXhmaWx0ZXI6IHRydWVcbiAgICB9KTtcbiAgICB2YXIgc2l6ZXMgPSBhcHAuY2FsY3VsYXRlU2l6ZXMoKTtcbiAgICBhcHAuY2FudmFzLnJlc2l6ZShzaXplcy5yaWdodHdpZHRoIC0gMTAwLCBzaXplcy50b3BoZWlnaHQgLSAyMTApO1xuICAgIHZhciBzID0geyB3aWR0aDogc2l6ZXMucmlnaHR3aWR0aCAtIDEwMCArICdweCcsIGhlaWdodDogc2l6ZXMuYm90dG9taGVpZ2h0ICsgJ3B4JyB9O1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIHNjaWwuYXBwbHkoYXBwLnNlcXVlbmNlLnN0eWxlLCBzKTtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBzY2lsLmFwcGx5KGFwcC5ub3RhdGlvbi5zdHlsZSwgcyk7XG4gICAgcyA9IHsgd2lkdGg6IHNpemVzLnJpZ2h0d2lkdGggKyAncHgnLCBoZWlnaHQ6IChzaXplcy5ib3R0b21oZWlnaHQgKyBhcHAudG9vbGJhcmhlaWdodCkgKyAncHgnIH07XG4gICAgLy9AdHMtaWdub3JlXG4gICAgc2NpbC5hcHBseShhcHAucHJvcGVydGllcy5wYXJlbnQuc3R5bGUsIHMpO1xuICAgIGFwcC5zdHJ1Y3R1cmV2aWV3LnJlc2l6ZShzaXplcy5yaWdodHdpZHRoLCBzaXplcy5ib3R0b21oZWlnaHQgKyBhcHAudG9vbGJhcmhlaWdodCk7XG4gICAgYXBwLm1leC5yZXNpemUoc2l6ZXMudG9waGVpZ2h0IC0gODApO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodHlwZW9mIHVuaXRzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgYXBwLmNhbnZhcy5oZWxtLnNldFNlcXVlbmNlKGNlbGwudmFsdWUsICdIRUxNJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhcHAuY2FudmFzLmhlbG0uc2V0U2VxdWVuY2UodmFsdWUsICdIRUxNJyk7XG4gICAgICAgIH1cbiAgICB9LCAyMDApO1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIHVpLmRpYWxvZyh7IHNob3dIZWFkZXI6IGZhbHNlLCBzaG93Rm9vdGVyOiB0cnVlIH0pXG4gICAgICAgIC5hZGQodmlldylcbiAgICAgICAgLm9uT0soKCkgPT4ge1xuICAgICAgICBsZXQgaGVsbVZhbHVlID0gYXBwLmNhbnZhcy5nZXRIZWxtKHRydWUpLnJlcGxhY2UoLzxcXC9zcGFuPi9nLCAnJykucmVwbGFjZSgvPHNwYW4gc3R5bGU9J2JhY2tncm91bmQ6I2JiZjsnPi9nLCAnJyk7XG4gICAgICAgIGlmICh0eXBlb2YgdW5pdHMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjZWxsLnZhbHVlID0gaGVsbVZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IGNvbnZlcnRlZFJlcyA9IGNvbnZlcnRlci5jb252ZXJ0SGVsbVRvRmFzdGFTZXBhcmF0b3IoaGVsbVZhbHVlLCB1bml0cyk7XG4gICAgICAgICAgICBjZWxsLnZhbHVlID0gY29udmVydGVkUmVzO1xuICAgICAgICB9XG4gICAgfSkuc2hvdyh7IG1vZGFsOiB0cnVlLCBmdWxsU2NyZWVuOiB0cnVlIH0pO1xufVxuZnVuY3Rpb24gZ2V0UlMoc21pbGVzKSB7XG4gICAgY29uc3QgbmV3UyA9IHNtaWxlcy5tYXRjaCgvKD88PVxcWylbXlxcXVtdKig/PV0pL2dtKTtcbiAgICBjb25zdCByZXMgPSB7fTtcbiAgICBsZXQgZWwgPSAnJztcbiAgICBsZXQgZGlnaXQ7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdTLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChuZXdTW2ldICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICgvXFxkLy50ZXN0KG5ld1NbaV0pKSB7XG4gICAgICAgICAgICAgICAgZGlnaXQgPSBuZXdTW2ldW25ld1NbaV0ubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgbmV3U1tpXSA9IG5ld1NbaV0ucmVwbGFjZSgvWzAtOV0vZywgJycpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbmV3U1tpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3U1tpXVtqXSAhPSAnOicpXG4gICAgICAgICAgICAgICAgICAgICAgICBlbCArPSBuZXdTW2ldW2pdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXNbJ1InICsgZGlnaXRdID0gZWw7XG4gICAgICAgICAgICAgICAgZWwgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuLy9uYW1lOiBnZXRNb2xmaWxlc1xuLy9pbnB1dDogY29sdW1uIGNvbCB7c2VtVHlwZTogTWFjcm9tb2xlY3VsZX1cbi8vb3V0cHV0OiBjb2x1bW4gcmVzIFxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbGZpbGVzKGNvbCkge1xuICAgIGxldCBncmlkID0gZ3Jvay5zaGVsbC50di5ncmlkO1xuICAgIGxldCBwYXJlbnQgPSBncmlkLnJvb3QucGFyZW50RWxlbWVudDtcbiAgICBsZXQgcmVzID0gREcuQ29sdW1uLnN0cmluZygnbW9scycsIGNvbC5sZW5ndGgpO1xuICAgIGNvbnN0IGhvc3QgPSB1aS5kaXYoW10pO1xuICAgIHBhcmVudC5hcHBlbmRDaGlsZChob3N0KTtcbiAgICBsZXQgZWRpdG9yID0gbmV3IEpTRHJhdzIuRWRpdG9yKGhvc3QsIHsgdmlld29ubHk6IHRydWUgfSk7XG4gICAgaG9zdC5zdHlsZS53aWR0aCA9ICcwcHgnO1xuICAgIGhvc3Quc3R5bGUuaGVpZ2h0ID0gJzBweCc7XG4gICAgcmVzLmluaXQoKGkpID0+IHtcbiAgICAgICAgZWRpdG9yLnNldEhlbG0oY29sLmdldChpKSk7XG4gICAgICAgIGxldCBtb2wgPSBlZGl0b3IuZ2V0TW9sZmlsZSgpO1xuICAgICAgICByZXR1cm4gbW9sO1xuICAgIH0pO1xuICAgIHBhcmVudC5sYXN0Q2hpbGQucmVtb3ZlKCk7XG4gICAgcmV0dXJuIHJlcztcbn1cbi8vbmFtZTogaGVsbVdlYkVkaXRvclxuLy9vdXRwdXQ6IG9iamVjdFxuZXhwb3J0IGZ1bmN0aW9uIGhlbG1XZWJFZGl0b3IoKSB7XG4gICAgcmV0dXJuIG5ldyBIZWxtV2ViRWRpdG9yKCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
|